@sap/ux-specification 1.136.14 → 1.136.16

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 (322) hide show
  1. package/CHANGELOG.md +250 -146
  2. package/dist/documentation/v2/v2-AnalyticalListPage.html +2 -2
  3. package/dist/documentation/v2/v2-ApplicationV2.html +2 -2
  4. package/dist/documentation/v2/v2-ListReport.html +2 -2
  5. package/dist/documentation/v2/v2-ListReportNew.html +2 -2
  6. package/dist/documentation/v2/v2-ObjectPage.html +2 -2
  7. package/dist/documentation/v2/v2-OverviewPage.html +2 -2
  8. package/dist/documentation/v4/v4-ApplicationV4.html +2 -2
  9. package/dist/documentation/v4/v4-BuildingBlocks.html +2 -2
  10. package/dist/documentation/v4/v4-FreestylePage.html +2 -2
  11. package/dist/documentation/v4/v4-ListReport.html +2 -2
  12. package/dist/documentation/v4/v4-ObjectPage.html +2 -2
  13. package/dist/index-min.js +269 -266
  14. package/dist/index-min.js.map +4 -4
  15. package/dist/schemas/v2/AnalyticalListPageConfig.json +3 -3
  16. package/dist/schemas/v2/ListReportConfig.json +5 -5
  17. package/dist/schemas/v2/ListReportNewConfig.json +1 -1
  18. package/dist/schemas/v2/ObjectPageConfig.json +5 -5
  19. package/dist/schemas/v4/ApplicationV4.json +1 -1
  20. package/dist/schemas/v4/BuildingBlocksConfig.json +120 -41
  21. package/dist/schemas/v4/ListReportConfig.json +275 -34
  22. package/dist/schemas/v4/ObjectPageConfig.json +417 -138
  23. package/dist/specification/package.json +13 -11
  24. package/dist/specification/scripts/extractDocu.js +18 -1
  25. package/dist/specification/scripts/extractDocu.js.map +1 -1
  26. package/dist/specification/scripts/generate-validity-report.d.ts +15 -0
  27. package/dist/specification/scripts/generate-validity-report.d.ts.map +1 -0
  28. package/dist/specification/scripts/generate-validity-report.js +367 -0
  29. package/dist/specification/scripts/generate-validity-report.js.map +1 -0
  30. package/dist/specification/scripts/macros/corrections.d.ts +40 -0
  31. package/dist/specification/scripts/macros/corrections.d.ts.map +1 -1
  32. package/dist/specification/scripts/macros/corrections.js +98 -7
  33. package/dist/specification/scripts/macros/corrections.js.map +1 -1
  34. package/dist/specification/scripts/macros/schema.d.ts.map +1 -1
  35. package/dist/specification/scripts/macros/schema.js +11 -2
  36. package/dist/specification/scripts/macros/schema.js.map +1 -1
  37. package/dist/specification/scripts/macros/types.d.ts +2 -0
  38. package/dist/specification/scripts/macros/types.d.ts.map +1 -1
  39. package/dist/specification/scripts/schema/to-json-schema.d.ts.map +1 -1
  40. package/dist/specification/scripts/schema/to-json-schema.js +2 -13
  41. package/dist/specification/scripts/schema/to-json-schema.js.map +1 -1
  42. package/dist/specification/src/api.d.ts.map +1 -1
  43. package/dist/specification/src/api.js +2 -1
  44. package/dist/specification/src/api.js.map +1 -1
  45. package/dist/specification/src/sync/common/DataFieldStrategy.d.ts +38 -8
  46. package/dist/specification/src/sync/common/DataFieldStrategy.d.ts.map +1 -1
  47. package/dist/specification/src/sync/common/DataFieldStrategy.js +64 -11
  48. package/dist/specification/src/sync/common/DataFieldStrategy.js.map +1 -1
  49. package/dist/specification/src/sync/common/ManifestDrivenSchemaProcessor.d.ts +0 -4
  50. package/dist/specification/src/sync/common/ManifestDrivenSchemaProcessor.d.ts.map +1 -1
  51. package/dist/specification/src/sync/common/ManifestDrivenSchemaProcessor.js +0 -3
  52. package/dist/specification/src/sync/common/ManifestDrivenSchemaProcessor.js.map +1 -1
  53. package/dist/specification/src/sync/common/appProvider.d.ts +0 -1
  54. package/dist/specification/src/sync/common/appProvider.d.ts.map +1 -1
  55. package/dist/specification/src/sync/common/appProvider.js +0 -1
  56. package/dist/specification/src/sync/common/appProvider.js.map +1 -1
  57. package/dist/specification/src/sync/common/decoration/decorator-paths.d.ts +503 -0
  58. package/dist/specification/src/sync/common/decoration/decorator-paths.d.ts.map +1 -0
  59. package/dist/specification/src/sync/common/decoration/decorator-paths.js +497 -0
  60. package/dist/specification/src/sync/common/decoration/decorator-paths.js.map +1 -0
  61. package/dist/specification/src/sync/common/decoration/decorators.d.ts +149 -23
  62. package/dist/specification/src/sync/common/decoration/decorators.d.ts.map +1 -1
  63. package/dist/specification/src/sync/common/decoration/decorators.js +369 -74
  64. package/dist/specification/src/sync/common/decoration/decorators.js.map +1 -1
  65. package/dist/specification/src/sync/common/decoration/index.d.ts +1 -0
  66. package/dist/specification/src/sync/common/decoration/index.d.ts.map +1 -1
  67. package/dist/specification/src/sync/common/decoration/index.js +1 -0
  68. package/dist/specification/src/sync/common/decoration/index.js.map +1 -1
  69. package/dist/specification/src/sync/common/dist_tag.json +8 -3
  70. package/dist/specification/src/sync/common/generate/objectPage.d.ts +0 -1
  71. package/dist/specification/src/sync/common/generate/objectPage.d.ts.map +1 -1
  72. package/dist/specification/src/sync/common/generate/objectPage.js +0 -3
  73. package/dist/specification/src/sync/common/generate/objectPage.js.map +1 -1
  74. package/dist/specification/src/sync/common/generate/utils.d.ts +3 -3
  75. package/dist/specification/src/sync/common/generate/utils.d.ts.map +1 -1
  76. package/dist/specification/src/sync/common/generate/utils.js +6 -3
  77. package/dist/specification/src/sync/common/generate/utils.js.map +1 -1
  78. package/dist/specification/src/sync/common/i18n.json +2 -1
  79. package/dist/specification/src/sync/common/import/utils.d.ts +0 -1
  80. package/dist/specification/src/sync/common/import/utils.d.ts.map +1 -1
  81. package/dist/specification/src/sync/common/import/utils.js +0 -1
  82. package/dist/specification/src/sync/common/import/utils.js.map +1 -1
  83. package/dist/specification/src/sync/common/rules.js +0 -1
  84. package/dist/specification/src/sync/common/rules.js.map +1 -1
  85. package/dist/specification/src/sync/common/utils.d.ts +35 -8
  86. package/dist/specification/src/sync/common/utils.d.ts.map +1 -1
  87. package/dist/specification/src/sync/common/utils.js +206 -22
  88. package/dist/specification/src/sync/common/utils.js.map +1 -1
  89. package/dist/specification/src/sync/v2/export/exportPageGeneric.d.ts.map +1 -1
  90. package/dist/specification/src/sync/v2/export/exportPageGeneric.js +3 -13
  91. package/dist/specification/src/sync/v2/export/exportPageGeneric.js.map +1 -1
  92. package/dist/specification/src/sync/v2/generate/analyticalListReport.d.ts.map +1 -1
  93. package/dist/specification/src/sync/v2/generate/analyticalListReport.js +48 -0
  94. package/dist/specification/src/sync/v2/generate/analyticalListReport.js.map +1 -1
  95. package/dist/specification/src/sync/v2/generate/listReport.d.ts.map +1 -1
  96. package/dist/specification/src/sync/v2/generate/listReport.js +3 -1
  97. package/dist/specification/src/sync/v2/generate/listReport.js.map +1 -1
  98. package/dist/specification/src/sync/v2/generate/objectPage.d.ts.map +1 -1
  99. package/dist/specification/src/sync/v2/generate/objectPage.js +2 -0
  100. package/dist/specification/src/sync/v2/generate/objectPage.js.map +1 -1
  101. package/dist/specification/src/sync/v2/generate/overviewPage.d.ts +1 -9
  102. package/dist/specification/src/sync/v2/generate/overviewPage.d.ts.map +1 -1
  103. package/dist/specification/src/sync/v2/generate/overviewPage.js +30 -1
  104. package/dist/specification/src/sync/v2/generate/overviewPage.js.map +1 -1
  105. package/dist/specification/src/sync/v2/generate/schemaAdaptation.d.ts.map +1 -1
  106. package/dist/specification/src/sync/v2/generate/schemaAdaptation.js +28 -1
  107. package/dist/specification/src/sync/v2/generate/schemaAdaptation.js.map +1 -1
  108. package/dist/specification/src/sync/v2/import/app/appProvider.d.ts.map +1 -1
  109. package/dist/specification/src/sync/v2/import/app/appProvider.js +2 -0
  110. package/dist/specification/src/sync/v2/import/app/appProvider.js.map +1 -1
  111. package/dist/specification/src/sync/v2/import/importPage.d.ts.map +1 -1
  112. package/dist/specification/src/sync/v2/import/importPage.js +5 -6
  113. package/dist/specification/src/sync/v2/import/importPage.js.map +1 -1
  114. package/dist/specification/src/sync/v2/import/pages/analyticalListPage.d.ts +2 -1
  115. package/dist/specification/src/sync/v2/import/pages/analyticalListPage.d.ts.map +1 -1
  116. package/dist/specification/src/sync/v2/import/pages/analyticalListPage.js +5 -0
  117. package/dist/specification/src/sync/v2/import/pages/analyticalListPage.js.map +1 -1
  118. package/dist/specification/src/sync/v2/import/pages/listReport.d.ts +2 -1
  119. package/dist/specification/src/sync/v2/import/pages/listReport.d.ts.map +1 -1
  120. package/dist/specification/src/sync/v2/import/pages/listReport.js +5 -0
  121. package/dist/specification/src/sync/v2/import/pages/listReport.js.map +1 -1
  122. package/dist/specification/src/sync/v2/import/pages/objectPage.d.ts.map +1 -1
  123. package/dist/specification/src/sync/v2/import/pages/objectPage.js +2 -1
  124. package/dist/specification/src/sync/v2/import/pages/objectPage.js.map +1 -1
  125. package/dist/specification/src/sync/v2/import/utils.d.ts +28 -1
  126. package/dist/specification/src/sync/v2/import/utils.d.ts.map +1 -1
  127. package/dist/specification/src/sync/v2/import/utils.js +37 -0
  128. package/dist/specification/src/sync/v2/import/utils.js.map +1 -1
  129. package/dist/specification/src/sync/v2/utils.d.ts +12 -2
  130. package/dist/specification/src/sync/v2/utils.d.ts.map +1 -1
  131. package/dist/specification/src/sync/v2/utils.js +19 -2
  132. package/dist/specification/src/sync/v2/utils.js.map +1 -1
  133. package/dist/specification/src/sync/v4/application.d.ts +21 -3
  134. package/dist/specification/src/sync/v4/application.d.ts.map +1 -1
  135. package/dist/specification/src/sync/v4/application.js +28 -3
  136. package/dist/specification/src/sync/v4/application.js.map +1 -1
  137. package/dist/specification/src/sync/v4/export/actions.d.ts +39 -0
  138. package/dist/specification/src/sync/v4/export/actions.d.ts.map +1 -0
  139. package/dist/specification/src/sync/v4/export/actions.js +99 -0
  140. package/dist/specification/src/sync/v4/export/actions.js.map +1 -0
  141. package/dist/specification/src/sync/v4/export/controls/FilterBar.d.ts +2 -1
  142. package/dist/specification/src/sync/v4/export/controls/FilterBar.d.ts.map +1 -1
  143. package/dist/specification/src/sync/v4/export/controls/FilterBar.js +2 -1
  144. package/dist/specification/src/sync/v4/export/controls/FilterBar.js.map +1 -1
  145. package/dist/specification/src/sync/v4/export/controls/Header.d.ts +4 -3
  146. package/dist/specification/src/sync/v4/export/controls/Header.d.ts.map +1 -1
  147. package/dist/specification/src/sync/v4/export/controls/Header.js +7 -3
  148. package/dist/specification/src/sync/v4/export/controls/Header.js.map +1 -1
  149. package/dist/specification/src/sync/v4/export/controls/HeaderAction.d.ts +2 -1
  150. package/dist/specification/src/sync/v4/export/controls/HeaderAction.d.ts.map +1 -1
  151. package/dist/specification/src/sync/v4/export/controls/HeaderAction.js +7 -0
  152. package/dist/specification/src/sync/v4/export/controls/HeaderAction.js.map +1 -1
  153. package/dist/specification/src/sync/v4/export/controls/ObjectPageCustomSection.d.ts +2 -1
  154. package/dist/specification/src/sync/v4/export/controls/ObjectPageCustomSection.d.ts.map +1 -1
  155. package/dist/specification/src/sync/v4/export/controls/ObjectPageCustomSection.js +2 -1
  156. package/dist/specification/src/sync/v4/export/controls/ObjectPageCustomSection.js.map +1 -1
  157. package/dist/specification/src/sync/v4/export/controls/ObjectPageForm.d.ts +2 -1
  158. package/dist/specification/src/sync/v4/export/controls/ObjectPageForm.d.ts.map +1 -1
  159. package/dist/specification/src/sync/v4/export/controls/ObjectPageForm.js.map +1 -1
  160. package/dist/specification/src/sync/v4/export/controls/ObjectPageFormAction.d.ts +2 -4
  161. package/dist/specification/src/sync/v4/export/controls/ObjectPageFormAction.d.ts.map +1 -1
  162. package/dist/specification/src/sync/v4/export/controls/ObjectPageFormAction.js +2 -21
  163. package/dist/specification/src/sync/v4/export/controls/ObjectPageFormAction.js.map +1 -1
  164. package/dist/specification/src/sync/v4/export/controls/ObjectPageHeader.d.ts +2 -2
  165. package/dist/specification/src/sync/v4/export/controls/ObjectPageHeader.d.ts.map +1 -1
  166. package/dist/specification/src/sync/v4/export/controls/ObjectPageHeader.js.map +1 -1
  167. package/dist/specification/src/sync/v4/export/controls/ObjectPageHeaderAction.d.ts +14 -3
  168. package/dist/specification/src/sync/v4/export/controls/ObjectPageHeaderAction.d.ts.map +1 -1
  169. package/dist/specification/src/sync/v4/export/controls/ObjectPageHeaderAction.js +52 -9
  170. package/dist/specification/src/sync/v4/export/controls/ObjectPageHeaderAction.js.map +1 -1
  171. package/dist/specification/src/sync/v4/export/controls/ObjectPageTable.d.ts +1 -1
  172. package/dist/specification/src/sync/v4/export/controls/ObjectPageTable.d.ts.map +1 -1
  173. package/dist/specification/src/sync/v4/export/controls/ObjectPageTable.js +0 -13
  174. package/dist/specification/src/sync/v4/export/controls/ObjectPageTable.js.map +1 -1
  175. package/dist/specification/src/sync/v4/export/controls/ObjectPageToolBarAction.d.ts +15 -3
  176. package/dist/specification/src/sync/v4/export/controls/ObjectPageToolBarAction.d.ts.map +1 -1
  177. package/dist/specification/src/sync/v4/export/controls/ObjectPageToolBarAction.js +53 -10
  178. package/dist/specification/src/sync/v4/export/controls/ObjectPageToolBarAction.js.map +1 -1
  179. package/dist/specification/src/sync/v4/export/controls/Table.d.ts +24 -18
  180. package/dist/specification/src/sync/v4/export/controls/Table.d.ts.map +1 -1
  181. package/dist/specification/src/sync/v4/export/controls/Table.js +40 -49
  182. package/dist/specification/src/sync/v4/export/controls/Table.js.map +1 -1
  183. package/dist/specification/src/sync/v4/export/controls/TableColumn.d.ts.map +1 -1
  184. package/dist/specification/src/sync/v4/export/controls/TableColumn.js +2 -2
  185. package/dist/specification/src/sync/v4/export/controls/TableColumn.js.map +1 -1
  186. package/dist/specification/src/sync/v4/export/controls/ToolBar.d.ts +9 -2
  187. package/dist/specification/src/sync/v4/export/controls/ToolBar.d.ts.map +1 -1
  188. package/dist/specification/src/sync/v4/export/controls/ToolBar.js +39 -1
  189. package/dist/specification/src/sync/v4/export/controls/ToolBar.js.map +1 -1
  190. package/dist/specification/src/sync/v4/export/controls/ToolBarAction.d.ts +17 -4
  191. package/dist/specification/src/sync/v4/export/controls/ToolBarAction.d.ts.map +1 -1
  192. package/dist/specification/src/sync/v4/export/controls/ToolBarAction.js +76 -19
  193. package/dist/specification/src/sync/v4/export/controls/ToolBarAction.js.map +1 -1
  194. package/dist/specification/src/sync/v4/export/export.d.ts +7 -0
  195. package/dist/specification/src/sync/v4/export/export.d.ts.map +1 -1
  196. package/dist/specification/src/sync/v4/export/export.js +125 -14
  197. package/dist/specification/src/sync/v4/export/export.js.map +1 -1
  198. package/dist/specification/src/sync/v4/export/pages/ListReport.js +1 -1
  199. package/dist/specification/src/sync/v4/export/pages/ListReport.js.map +1 -1
  200. package/dist/specification/src/sync/v4/export/types.d.ts +2 -0
  201. package/dist/specification/src/sync/v4/export/types.d.ts.map +1 -1
  202. package/dist/specification/src/sync/v4/generate/actions.d.ts +35 -0
  203. package/dist/specification/src/sync/v4/generate/actions.d.ts.map +1 -0
  204. package/dist/specification/src/sync/v4/generate/actions.js +112 -0
  205. package/dist/specification/src/sync/v4/generate/actions.js.map +1 -0
  206. package/dist/specification/src/sync/v4/generate/fpm-custom-page/annotations.d.ts +3 -3
  207. package/dist/specification/src/sync/v4/generate/fpm-custom-page/annotations.d.ts.map +1 -1
  208. package/dist/specification/src/sync/v4/generate/fpm-custom-page/annotations.js +11 -3
  209. package/dist/specification/src/sync/v4/generate/fpm-custom-page/annotations.js.map +1 -1
  210. package/dist/specification/src/sync/v4/generate/fpm-custom-page/extensions.d.ts +1 -1
  211. package/dist/specification/src/sync/v4/generate/fpm-custom-page/extensions.d.ts.map +1 -1
  212. package/dist/specification/src/sync/v4/generate/fpm-custom-page/extensions.js +3 -2
  213. package/dist/specification/src/sync/v4/generate/fpm-custom-page/extensions.js.map +1 -1
  214. package/dist/specification/src/sync/v4/generate/fpm-custom-page/generator.d.ts.map +1 -1
  215. package/dist/specification/src/sync/v4/generate/fpm-custom-page/generator.js +25 -3
  216. package/dist/specification/src/sync/v4/generate/fpm-custom-page/generator.js.map +1 -1
  217. package/dist/specification/src/sync/v4/generate/fpm-custom-page/utils.d.ts.map +1 -1
  218. package/dist/specification/src/sync/v4/generate/fpm-custom-page/utils.js +11 -2
  219. package/dist/specification/src/sync/v4/generate/fpm-custom-page/utils.js.map +1 -1
  220. package/dist/specification/src/sync/v4/generate/index.d.ts +1 -1
  221. package/dist/specification/src/sync/v4/generate/index.d.ts.map +1 -1
  222. package/dist/specification/src/sync/v4/generate/index.js +1 -1
  223. package/dist/specification/src/sync/v4/generate/index.js.map +1 -1
  224. package/dist/specification/src/sync/v4/generate/list-report/ListReportUtils.d.ts +73 -0
  225. package/dist/specification/src/sync/v4/generate/list-report/ListReportUtils.d.ts.map +1 -0
  226. package/dist/specification/src/sync/v4/generate/list-report/ListReportUtils.js +354 -0
  227. package/dist/specification/src/sync/v4/generate/list-report/ListReportUtils.js.map +1 -0
  228. package/dist/specification/src/sync/v4/generate/{listReport.d.ts → list-report/listReport.d.ts} +46 -19
  229. package/dist/specification/src/sync/v4/generate/list-report/listReport.d.ts.map +1 -0
  230. package/dist/specification/src/sync/v4/generate/{listReport.js → list-report/listReport.js} +195 -316
  231. package/dist/specification/src/sync/v4/generate/list-report/listReport.js.map +1 -0
  232. package/dist/specification/src/sync/v4/generate/objectPage.d.ts +0 -1
  233. package/dist/specification/src/sync/v4/generate/objectPage.d.ts.map +1 -1
  234. package/dist/specification/src/sync/v4/generate/objectPage.js +148 -56
  235. package/dist/specification/src/sync/v4/generate/objectPage.js.map +1 -1
  236. package/dist/specification/src/sync/v4/import/pages/listReport.d.ts.map +1 -1
  237. package/dist/specification/src/sync/v4/import/pages/listReport.js +2 -1
  238. package/dist/specification/src/sync/v4/import/pages/listReport.js.map +1 -1
  239. package/dist/specification/src/sync/v4/import/pages/objectPage.d.ts.map +1 -1
  240. package/dist/specification/src/sync/v4/import/pages/objectPage.js +16 -3
  241. package/dist/specification/src/sync/v4/import/pages/objectPage.js.map +1 -1
  242. package/dist/specification/src/sync/v4/import/utils.d.ts +0 -1
  243. package/dist/specification/src/sync/v4/import/utils.d.ts.map +1 -1
  244. package/dist/specification/src/sync/v4/import/utils.js +5 -4
  245. package/dist/specification/src/sync/v4/import/utils.js.map +1 -1
  246. package/dist/specification/src/sync/v4/sync-rules/App.d.ts +9 -7
  247. package/dist/specification/src/sync/v4/sync-rules/App.d.ts.map +1 -1
  248. package/dist/specification/src/sync/v4/sync-rules/App.js +4 -8
  249. package/dist/specification/src/sync/v4/sync-rules/App.js.map +1 -1
  250. package/dist/specification/src/sync/v4/sync-rules/AppSchema.d.ts +2 -9
  251. package/dist/specification/src/sync/v4/sync-rules/AppSchema.d.ts.map +1 -1
  252. package/dist/specification/src/sync/v4/sync-rules/AppSchema.js +2 -11
  253. package/dist/specification/src/sync/v4/sync-rules/AppSchema.js.map +1 -1
  254. package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.d.ts +177 -46
  255. package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.d.ts.map +1 -1
  256. package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.js +498 -152
  257. package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.js.map +1 -1
  258. package/dist/specification/src/sync/v4/sync-rules/Page.d.ts +17 -22
  259. package/dist/specification/src/sync/v4/sync-rules/Page.d.ts.map +1 -1
  260. package/dist/specification/src/sync/v4/sync-rules/Page.js +15 -22
  261. package/dist/specification/src/sync/v4/sync-rules/Page.js.map +1 -1
  262. package/dist/specification/src/sync/v4/sync-rules/controllerExtensions.d.ts +1 -0
  263. package/dist/specification/src/sync/v4/sync-rules/controllerExtensions.d.ts.map +1 -1
  264. package/dist/specification/src/sync/v4/sync-rules/controllerExtensions.js +17 -9
  265. package/dist/specification/src/sync/v4/sync-rules/controllerExtensions.js.map +1 -1
  266. package/dist/specification/src/sync/v4/sync-rules/index.d.ts +5 -0
  267. package/dist/specification/src/sync/v4/sync-rules/index.d.ts.map +1 -0
  268. package/dist/specification/src/sync/v4/sync-rules/index.js +21 -0
  269. package/dist/specification/src/sync/v4/sync-rules/index.js.map +1 -0
  270. package/dist/specification/src/sync/v4/sync-rules/utils.d.ts.map +1 -1
  271. package/dist/specification/src/sync/v4/sync-rules/utils.js +4 -0
  272. package/dist/specification/src/sync/v4/sync-rules/utils.js.map +1 -1
  273. package/dist/specification/src/sync/v4/utils/index.d.ts +2 -0
  274. package/dist/specification/src/sync/v4/utils/index.d.ts.map +1 -0
  275. package/dist/specification/src/sync/v4/utils/index.js +18 -0
  276. package/dist/specification/src/sync/v4/utils/index.js.map +1 -0
  277. package/dist/specification/src/sync/v4/utils/utils.d.ts +112 -26
  278. package/dist/specification/src/sync/v4/utils/utils.d.ts.map +1 -1
  279. package/dist/specification/src/sync/v4/utils/utils.js +374 -46
  280. package/dist/specification/src/sync/v4/utils/utils.js.map +1 -1
  281. package/dist/specification/test/test-projects/v2sttaProdMan2/webapp/manifest.json +550 -0
  282. package/dist/specification/test/test-projects/v4new/webapp/manifest.json +147 -0
  283. package/dist/specification/test/test-utils/utils.d.ts +71 -0
  284. package/dist/specification/test/test-utils/utils.d.ts.map +1 -0
  285. package/dist/specification/test/test-utils/utils.js +400 -0
  286. package/dist/specification/test/test-utils/utils.js.map +1 -0
  287. package/dist/specification/test/unit/decorators/validity-test-utils.d.ts +131 -0
  288. package/dist/specification/test/unit/decorators/validity-test-utils.d.ts.map +1 -0
  289. package/dist/specification/test/unit/decorators/validity-test-utils.js +661 -0
  290. package/dist/specification/test/unit/decorators/validity-test-utils.js.map +1 -0
  291. package/dist/types/src/apiTypes.d.ts +5 -5
  292. package/dist/types/src/apiTypes.d.ts.map +1 -1
  293. package/dist/types/src/apiTypes.js +1 -0
  294. package/dist/types/src/apiTypes.js.map +1 -1
  295. package/dist/types/src/common/types.d.ts +162 -15
  296. package/dist/types/src/common/types.d.ts.map +1 -1
  297. package/dist/types/src/common/types.js +41 -2
  298. package/dist/types/src/common/types.js.map +1 -1
  299. package/dist/types/src/v2/controls/ObjectPageTable.d.ts +1 -1
  300. package/dist/types/src/v2/controls/Table.d.ts +1 -1
  301. package/dist/types/src/v4/controls/CustomAction.d.ts +133 -19
  302. package/dist/types/src/v4/controls/CustomAction.d.ts.map +1 -1
  303. package/dist/types/src/v4/controls/CustomAction.js.map +1 -1
  304. package/dist/types/src/v4/controls/ObjectPageForm.d.ts +2 -2
  305. package/dist/types/src/v4/controls/ObjectPageForm.d.ts.map +1 -1
  306. package/dist/types/src/v4/controls/ObjectPageHeader.d.ts +22 -3
  307. package/dist/types/src/v4/controls/ObjectPageHeader.d.ts.map +1 -1
  308. package/dist/types/src/v4/controls/ObjectPageTable.d.ts +1 -1
  309. package/dist/types/src/v4/controls/ObjectPageTable.d.ts.map +1 -1
  310. package/dist/types/src/v4/controls/ObjectPageToolBar.d.ts +2 -2
  311. package/dist/types/src/v4/controls/ObjectPageToolBar.d.ts.map +1 -1
  312. package/dist/types/src/v4/controls/Table.d.ts +3 -3
  313. package/dist/types/src/v4/controls/Table.d.ts.map +1 -1
  314. package/dist/types/src/v4/controls/ToolBar.d.ts +3 -3
  315. package/dist/types/src/v4/controls/ToolBar.d.ts.map +1 -1
  316. package/package.json +14 -12
  317. package/dist/specification/src/sync/v4/generate/ListReportUtils.d.ts +0 -107
  318. package/dist/specification/src/sync/v4/generate/ListReportUtils.d.ts.map +0 -1
  319. package/dist/specification/src/sync/v4/generate/ListReportUtils.js +0 -392
  320. package/dist/specification/src/sync/v4/generate/ListReportUtils.js.map +0 -1
  321. package/dist/specification/src/sync/v4/generate/listReport.d.ts.map +0 -1
  322. package/dist/specification/src/sync/v4/generate/listReport.js.map +0 -1
@@ -9,23 +9,22 @@ exports.addVisualFilters = addVisualFilters;
9
9
  exports.applyCustomFilterFields = applyCustomFilterFields;
10
10
  exports.analyzeViewAnnotation = analyzeViewAnnotation;
11
11
  exports.addALPViews = addALPViews;
12
- exports.applyLRTableSchemaAdjustments = applyLRTableSchemaAdjustments;
12
+ exports.applyLRSchemaAdjustments = applyLRSchemaAdjustments;
13
13
  exports.addTagsToView = addTagsToView;
14
14
  exports.addLRViewParts = addLRViewParts;
15
- exports.getDefaultAnnotationPath = getDefaultAnnotationPath;
16
15
  exports.addHeaderActions = addHeaderActions;
17
16
  exports.addManifestPathsToPropertiesLR = addManifestPathsToPropertiesLR;
18
17
  exports.generateListReportSchemaV4 = generateListReportSchemaV4;
19
- const utils_1 = require("../utils/utils");
20
- const utils_2 = require("../utils/utils");
18
+ const utils_1 = require("../../utils");
19
+ const utils_2 = require("../../utils");
21
20
  const ux_specification_types_1 = require("@sap/ux-specification-types");
22
21
  const i18next_1 = __importDefault(require("i18next"));
23
- const extensionLogger_1 = require("../../../extensionLogger");
24
- const common_1 = require("../../common");
25
- const AppSchema_1 = require("../sync-rules/AppSchema");
26
- const App_1 = require("../sync-rules/App");
27
- const Page_1 = require("../sync-rules/Page");
22
+ const extensionLogger_1 = require("../../../../extensionLogger");
23
+ const common_1 = require("../../../common");
24
+ const actions_1 = require("../actions");
25
+ const sync_rules_1 = require("../../sync-rules");
28
26
  const ListReportUtils_1 = require("./ListReportUtils");
27
+ const controls_1 = require("../../export/controls");
29
28
  const ROOT_PROPERTIES_ORDER = ['header', 'filterBar', 'chart', 'table'];
30
29
  const UILINEITEM = '@UI.LineItem';
31
30
  /**
@@ -39,6 +38,7 @@ const UILINEITEM = '@UI.LineItem';
39
38
  * @returns {Definition} - the updated selection fields definition
40
39
  */
41
40
  function addSelectionFields(entityType, appSchema, selectionFieldsAnnotation, selectionFieldsDefinition, qualifier) {
41
+ // No @validity check needed here
42
42
  if (!selectionFieldsDefinition) {
43
43
  selectionFieldsDefinition = appSchema.definitions[ux_specification_types_1.DefinitionName.SelectionFields];
44
44
  selectionFieldsDefinition.additionalProperties = false;
@@ -50,8 +50,9 @@ function addSelectionFields(entityType, appSchema, selectionFieldsAnnotation, se
50
50
  if (selectionFieldsAnnotation) {
51
51
  let i = 0;
52
52
  selectionFieldsAnnotation?.forEach((selectionField) => {
53
+ const value = selectionField.value ?? `UnknownField${i}`;
53
54
  let description = selectionField.value;
54
- const fieldDefinition = 'SelectionField::' + (0, common_1.prepareRef)(selectionField.value);
55
+ const fieldDefinition = 'SelectionField::' + (0, common_1.prepareRef)(value);
55
56
  if (selectionField.type === 'PropertyPath') {
56
57
  description = (0, common_1.getLabelForPropertyPath)(selectionField, entityType);
57
58
  }
@@ -67,10 +68,14 @@ function addSelectionFields(entityType, appSchema, selectionFieldsAnnotation, se
67
68
  additionalProperties: false,
68
69
  ...(dataType && { dataType })
69
70
  };
71
+ if (selectionField.value === undefined) {
72
+ // Add message about unresolvable value for selection field
73
+ (0, common_1.addMessageToSchema)(appSchema.definitions[fieldDefinition], {
74
+ text: i18next_1.default.t('UNRESOLVABLE_VALUE_OF_SELECTION_FIELD')
75
+ });
76
+ }
70
77
  appSchema.definitions[fieldDefinition][ux_specification_types_1.SchemaTag.isViewNode] = true;
71
- appSchema.definitions[fieldDefinition][ux_specification_types_1.SchemaTag.keys] = [
72
- { name: ux_specification_types_1.SchemaKeyName.value, value: `${selectionField.value}` }
73
- ];
78
+ appSchema.definitions[fieldDefinition][ux_specification_types_1.SchemaTag.keys] = [{ name: ux_specification_types_1.SchemaKeyName.value, value: `${value}` }];
74
79
  if (selectionField.$target?.fullyQualifiedName.indexOf('@') > -1) {
75
80
  appSchema.definitions[fieldDefinition][ux_specification_types_1.SchemaTag.target] = selectionField.$target.fullyQualifiedName
76
81
  .split('@')[0]
@@ -129,6 +134,7 @@ function getPropertiesIndex(selectionFields, entityType) {
129
134
  * @param selectionFields - The selection fields annotation to be processed
130
135
  */
131
136
  function addVisualFilters(entityType, appSchema, visualFiltersManifest, selectionFields) {
137
+ // No @validity check needed here
132
138
  const propertiesIndex = getPropertiesIndex(selectionFields, entityType);
133
139
  const visualFilters = appSchema.definitions[ux_specification_types_1.DefinitionName.VisualFilters];
134
140
  visualFilters.properties = {};
@@ -170,6 +176,8 @@ function applyCustomFilterFields(appSchema, selectionFieldsDefinition, v4Page) {
170
176
  };
171
177
  (0, utils_2.addCustomFilterFieldDefinition)(appSchema, selectionFieldsDefinition, v4Page);
172
178
  const customSectionDefinition = appSchema.definitions[ux_specification_types_1.DefinitionName.CustomFilterFieldPosition];
179
+ // Instantiate for @validity check
180
+ new controls_1.CustomFilterFieldPosition().init();
173
181
  if (typeof customSectionDefinition === 'object') {
174
182
  (0, common_1.addDescriptiveEnumDefinition)(appSchema, selectionFieldsDefinition, {
175
183
  schema: customSectionDefinition,
@@ -181,38 +189,6 @@ function applyCustomFilterFields(appSchema, selectionFieldsDefinition, v4Page) {
181
189
  });
182
190
  }
183
191
  }
184
- /**
185
- * Adds selection fields or compact/visual filters to filter bar.
186
- *
187
- * @param entityType - actual entity type (AVT information)
188
- * @param appSchema - app-specific JSON schema
189
- * @param v4Page - actual page in the manifest
190
- * @param alias - the given alias or namespace of the OData annotations
191
- */
192
- function addFilterBar(entityType, appSchema, v4Page, alias) {
193
- const visualFilters = getVisualFilters(v4Page);
194
- const selectionFields = alias && entityType?.annotations?.[alias]?.SelectionFields;
195
- let selectionFieldsDefinition;
196
- // Hide visualFilters/selectionFields depending on existing visual filters
197
- if (visualFilters) {
198
- appSchema.definitions[ux_specification_types_1.DefinitionName.SelectionFields][ux_specification_types_1.SchemaTag.hidden] = true;
199
- appSchema.definitions[ux_specification_types_1.DefinitionName.SelectionFields]['properties'] = {};
200
- selectionFieldsDefinition = appSchema.definitions[ux_specification_types_1.DefinitionName.CompactFilters];
201
- selectionFieldsDefinition.additionalProperties = false;
202
- selectionFieldsDefinition.properties = {};
203
- addVisualFilters(entityType, appSchema, visualFilters, selectionFields);
204
- }
205
- else {
206
- const filterBar = appSchema.definitions[ux_specification_types_1.DefinitionName.FilterBar];
207
- filterBar.properties['initialLayout'][ux_specification_types_1.SchemaTag.hidden] = true;
208
- filterBar.properties['layout'][ux_specification_types_1.SchemaTag.hidden] = true;
209
- appSchema.definitions[ux_specification_types_1.DefinitionName.CompactFilters][ux_specification_types_1.SchemaTag.hidden] = true;
210
- appSchema.definitions[ux_specification_types_1.DefinitionName.VisualFilters][ux_specification_types_1.SchemaTag.hidden] = true;
211
- }
212
- selectionFieldsDefinition = addSelectionFields(entityType, appSchema, selectionFields, selectionFieldsDefinition);
213
- // Apply custom filter fields
214
- applyCustomFilterFields(appSchema, selectionFieldsDefinition, v4Page);
215
- }
216
192
  /**
217
193
  *
218
194
  * @param appSchema - The app JSON schema to be updated
@@ -426,6 +402,8 @@ function addALPChartView(appSchema, chartAnnotationPath, targetAnnotation, annot
426
402
  chartView[ux_specification_types_1.SchemaTag.artifactType] = ux_specification_types_1.ArtifactType.Manifest;
427
403
  chartView[ux_specification_types_1.SchemaTag.key] = 'primary';
428
404
  chartView[ux_specification_types_1.SchemaTag.keys] = [{ name: ux_specification_types_1.SchemaKeyName.key, value: 'primary' }];
405
+ // Instantiate for @validity check
406
+ new controls_1.ALPChart().init();
429
407
  }
430
408
  /**
431
409
  * Adds the ALP views to the app-specific schema.
@@ -498,28 +476,27 @@ function addALPViews(appSchema, viewsPaths, generateParameters, templateAnnotati
498
476
  appSchema.definitions[ux_specification_types_1.DefinitionName.ALPTable][ux_specification_types_1.SchemaTag.annotationPath] = target;
499
477
  }
500
478
  const schemaAdjustmentParameters = {
479
+ logger: generateParameters.logger,
501
480
  appSchema,
502
481
  v4Page,
503
- tableDefinitionId: ux_specification_types_1.DefinitionName.ALPTable,
504
- facetDefinitionId: ux_specification_types_1.DefinitionName.LineItems,
505
- dataForLineItem
482
+ tableDefinitionKey: ux_specification_types_1.DefinitionName.ALPTable,
483
+ facetDefinitionKey: ux_specification_types_1.DefinitionName.LineItems,
484
+ dataForLineItem,
485
+ customActionDefinitionName: ux_specification_types_1.DefinitionName.CustomTableAction,
486
+ sectionActionsDefinitionKey: `${ux_specification_types_1.DefinitionName.Actions}<${(0, common_1.prepareRef)(ux_specification_types_1.DefinitionName.LineItems)}>`
506
487
  };
507
- applyLRTableSchemaAdjustments(schemaAdjustmentParameters);
488
+ applyLRSchemaAdjustments(schemaAdjustmentParameters);
508
489
  const pathParts = annotations[viewAnnotation].fullyQualifiedName.split('@');
509
490
  tableView[ux_specification_types_1.SchemaTag.annotationPath] = `/${pathParts[0]}/@${pathParts[1]}`;
510
491
  tableView[ux_specification_types_1.SchemaTag.key] = 'secondary';
511
492
  tableView[ux_specification_types_1.SchemaTag.keys] = [{ name: ux_specification_types_1.SchemaKeyName.key, value: 'secondary' }];
512
493
  }
513
494
  (0, utils_2.addCustomColumnDefinition)(appSchema, v4Page, generateParameters.logger);
514
- // Table toolbar actions with custom actions
515
- const schemaIdForToolbarActions = `${ux_specification_types_1.DefinitionName.Actions}<${(0, common_1.prepareRef)(ux_specification_types_1.DefinitionName.LineItems)}>`;
516
- (0, utils_2.addCustomActionDefinition)(appSchema, v4Page, generateParameters.logger, undefined, schemaIdForToolbarActions);
517
- (0, utils_2.addEnumForActionAnchor)(appSchema, schemaIdForToolbarActions, ux_specification_types_1.DefinitionName.CustomActionPosition);
518
495
  // Add "manifestPath" for table properties
519
496
  addManifestPathsToPropertiesLR(appSchema, ux_specification_types_1.DefinitionName.ALPTable, tableDefinition, {
520
497
  pageName: v4Page.id,
521
498
  manifest: generateParameters.manifest,
522
- targetAnnotation
499
+ targetAnnotation: target
523
500
  });
524
501
  }
525
502
  /**
@@ -558,18 +535,31 @@ function addViewChartDefinitions(inputParameters, annotations) {
558
535
  * @param viewsDefinition - the views definition in app schema (MultiTableModeV4)
559
536
  * @param viewKey - view key
560
537
  * @param title - view title
538
+ * @param page - Represents the page in the application's structure where the view line items are to be added.
539
+ * @param app - Represents the overall application structure, providing access to the manifest.
561
540
  */
562
- function addViewChart(inputParameters, UIAnnotations, appSchema, viewsDefinition, viewKey, title) {
541
+ function addViewChart(inputParameters, UIAnnotations, appSchema, viewsDefinition, viewKey, title, page, app) {
563
542
  const idForChart = addViewChartDefinitions(inputParameters, UIAnnotations);
564
- appSchema.definitions[idForChart].properties.annotationPath[ux_specification_types_1.SchemaTag.hidden] = true;
565
- appSchema.definitions[idForChart].properties.index[ux_specification_types_1.SchemaTag.hidden] = true;
566
- appSchema.definitions[idForChart].properties.entitySet[ux_specification_types_1.SchemaTag.hidden] = true;
543
+ const chartViewDefinition = appSchema.definitions[idForChart];
544
+ chartViewDefinition.properties.annotationPath[ux_specification_types_1.SchemaTag.hidden] = true;
545
+ chartViewDefinition.properties.index[ux_specification_types_1.SchemaTag.hidden] = true;
546
+ chartViewDefinition.properties.entitySet[ux_specification_types_1.SchemaTag.hidden] = true;
567
547
  const titleOnHover = `Chart View (key: ${viewKey})`;
568
548
  viewsDefinition.properties[viewKey] = {
569
549
  $ref: `${common_1.DEFINITION_LINK_PREFIX}${idForChart}`,
570
550
  description: title ? title : titleOnHover,
571
551
  title: titleOnHover
572
552
  };
553
+ // Add "manifestPath" for table properties
554
+ addManifestPathsToPropertiesLR(inputParameters.appSchema, ux_specification_types_1.DefinitionName.LRChartView, chartViewDefinition, {
555
+ pageName: page.target.id,
556
+ manifest: app.manifest,
557
+ targetAnnotation: inputParameters.targetAnnotation,
558
+ viewConfig: {
559
+ key: viewKey,
560
+ entitySet: inputParameters.entitySet
561
+ }
562
+ });
573
563
  }
574
564
  /**
575
565
  * Retrieves the line item reference for a specified view and entity type.
@@ -599,20 +589,19 @@ function getLineItemRef(v4Page, entityType, viewKey, lineItemTerm, lineItemQuali
599
589
  *
600
590
  * @param {SchemaAdjustmentParameters} schemaAdjustmentParameters - An object containing parameters required for schema adjustments.
601
591
  * It includes the application schema, table definition ID, facet definition ID, and the V4 page information.
602
- * @returns {void} This function does not return any value.
603
592
  */
604
593
  function adjustCreationFieldsDefinition(schemaAdjustmentParameters) {
605
- const { entityType, appSchema, tableDefinitionId, facetDefinitionId, v4Page, viewKey } = schemaAdjustmentParameters;
594
+ const { entityType, appSchema, tableDefinitionKey, facetDefinitionKey, v4Page, viewKey } = schemaAdjustmentParameters;
606
595
  // when the table view is created, the entity type may differ from the one used for the table
607
596
  // schemaAdjustmentParameters contains the entity type used for the view
608
597
  const lineItemRef = getLineItemRef(v4Page, entityType, viewKey, entityType?.annotations?.UI?.LineItem?.term);
609
598
  // set specific implementation for creation fields in the LR table
610
- const creationModeDefinitionKey = (0, common_1.getFacetDefinitionKey)(ux_specification_types_1.DefinitionName.TableCreationModeLR, facetDefinitionId);
611
- const tableDefinition = appSchema.definitions[tableDefinitionId];
599
+ const creationModeDefinitionKey = (0, common_1.getFacetDefinitionKey)(ux_specification_types_1.DefinitionName.TableCreationModeLR, facetDefinitionKey);
600
+ const tableDefinition = appSchema.definitions[tableDefinitionKey];
612
601
  const creationModeProperty = tableDefinition.properties[ux_specification_types_1.PropertyName.creationMode];
613
- creationModeProperty.$ref = (0, common_1.getFacetDefinitionLink)(ux_specification_types_1.DefinitionName.TableCreationModeLR, facetDefinitionId);
602
+ creationModeProperty.$ref = (0, common_1.getFacetDefinitionLink)(ux_specification_types_1.DefinitionName.TableCreationModeLR, facetDefinitionKey);
614
603
  const creationModeDefinition = appSchema.definitions[creationModeDefinitionKey] ??
615
- (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.TableCreationModeLR, facetDefinitionId, appSchema);
604
+ (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.TableCreationModeLR, facetDefinitionKey, appSchema);
616
605
  const context = {
617
606
  page: v4Page,
618
607
  schema: creationModeDefinition,
@@ -634,20 +623,19 @@ function adjustCreationFieldsDefinition(schemaAdjustmentParameters) {
634
623
  *
635
624
  * @param {SchemaAdjustmentParameters} schemaAdjustmentParameters - An object containing parameters required for schema adjustments.
636
625
  * It includes the application schema, table definition ID, facet definition ID, and the V4 page information.
637
- * @returns {void} This function does not return any value.
638
626
  */
639
627
  function adjustAnalyticalConfiguration(schemaAdjustmentParameters) {
640
- const { entityType, appSchema, tableDefinitionId, facetDefinitionId, v4Page, viewKey, dataForLineItem } = schemaAdjustmentParameters;
628
+ const { entityType, appSchema, tableDefinitionKey, facetDefinitionKey, v4Page, viewKey, dataForLineItem } = schemaAdjustmentParameters;
641
629
  // when the table view is created, the entity type may differ from the one used for the table
642
630
  // schemaAdjustmentParameters contains the entity type used for the view
643
631
  const lineItemRef = getLineItemRef(v4Page, entityType, viewKey, entityType?.annotations?.UI?.LineItem?.term, dataForLineItem.lineItemAnnotation?.qualifier);
644
632
  // set specific implementation for analytical configuration in the LR table
645
- const tableDefinition = appSchema.definitions[tableDefinitionId];
633
+ const tableDefinition = appSchema.definitions[tableDefinitionKey];
646
634
  const analyticalConfigurationDefinitionName = viewKey
647
635
  ? ux_specification_types_1.DefinitionName.ViewAnalyticalConfiguration
648
636
  : ux_specification_types_1.DefinitionName.AnalyticalConfiguration;
649
637
  const analyticalConfigurationDefinition = appSchema.definitions[analyticalConfigurationDefinitionName] ??
650
- (0, common_1.parseSchemaDefinition)(analyticalConfigurationDefinitionName, facetDefinitionId, appSchema);
638
+ (0, common_1.parseSchemaDefinition)(analyticalConfigurationDefinitionName, facetDefinitionKey, appSchema);
651
639
  const context = {
652
640
  page: v4Page,
653
641
  schema: analyticalConfigurationDefinition,
@@ -665,48 +653,65 @@ function adjustAnalyticalConfiguration(schemaAdjustmentParameters) {
665
653
  *
666
654
  * @param {SchemaAdjustmentParameters} schemaAdjustmentParameters - An object containing parameters required for schema adjustments.
667
655
  * It includes the application schema, table definition ID, facet definition ID, and the V4 page information.
668
- * @returns {void} This function does not return any value.
669
656
  */
670
657
  function adjustPopinLayout(schemaAdjustmentParameters) {
671
- const { entityType, appSchema, tableDefinitionId, v4Page, viewKey, dataForLineItem } = schemaAdjustmentParameters;
658
+ const { entityType, appSchema, tableDefinitionKey, v4Page, viewKey, dataForLineItem } = schemaAdjustmentParameters;
672
659
  // when the table view is created, the entity type may differ from the one used for the table
673
660
  // schemaAdjustmentParameters contains the entity type used for the view
674
661
  const lineItemRef = getLineItemRef(v4Page, entityType, viewKey, entityType?.annotations?.UI?.LineItem?.term, dataForLineItem.lineItemAnnotation?.qualifier);
662
+ // set specific implementation for popinLayout in the LR table
663
+ const tableDefinition = appSchema.definitions[tableDefinitionKey];
664
+ const popinLayoutDefinition = tableDefinition.properties['popinLayout'];
665
+ const context = {
666
+ page: v4Page,
667
+ schema: popinLayoutDefinition,
668
+ parameters: {
669
+ lineItemRef,
670
+ tableDefinition
671
+ }
672
+ };
673
+ // for the ResponsiveTable (default table type) we allow to set the popin layout property
674
+ common_1.manifestDrivenSchemaProcessor.apply(ux_specification_types_1.RuleName.LRPopinLayoutForNonResponsiveTable, context);
675
675
  }
676
676
  /**
677
677
  * Adjusts the schema for a table by making necessary changes such as populating creation fields,
678
678
  * adjusting creation field definitions, and adding enum mappings for mass edit functionalities.
679
679
  *
680
680
  * @param {SchemaAdjustmentParameters} schemaAdjustmentParameters - Object containing the parameters required for schema adjustments. Includes the generate parameters, application schema, table definition ID, and facet definition ID.
681
- * @returns {void} This function does not return a value; it performs in-place adjustments to the schema provided through the input parameters.
682
681
  */
683
- function applyLRTableSchemaAdjustments(schemaAdjustmentParameters) {
684
- const { entityType, appSchema, tableDefinitionId, facetDefinitionId } = schemaAdjustmentParameters;
682
+ function applyLRSchemaAdjustments(schemaAdjustmentParameters) {
683
+ const { entityType, appSchema, tableDefinitionKey, facetDefinitionKey } = schemaAdjustmentParameters;
685
684
  // in the future, all postgeneration adjustments for the LR Page should be done here
686
685
  // populate the creation fields for the table with the data from the columns
687
- (0, utils_1.initializeCreationModeSchema)(appSchema, facetDefinitionId, entityType, ux_specification_types_1.DefinitionName.TableCreationModeLR);
686
+ (0, utils_1.initializeCreationModeSchema)(appSchema, facetDefinitionKey, entityType, ux_specification_types_1.DefinitionName.TableCreationModeLR);
688
687
  // remove unnecessary properties from the creation mode aggregation according to the table type
689
688
  adjustCreationFieldsDefinition(schemaAdjustmentParameters);
690
689
  // remove unnecessary properties from the analytical configuration aggregation according to the table type
691
690
  adjustAnalyticalConfiguration(schemaAdjustmentParameters);
692
691
  adjustPopinLayout(schemaAdjustmentParameters);
693
692
  // add columns to a enum, in this case enableMassEdit -> visibleFields and ignoredFields
694
- (0, utils_2.addEnumForEnableMassEdit)(appSchema, tableDefinitionId, facetDefinitionId, entityType);
693
+ (0, utils_2.addEnumForEnableMassEdit)(appSchema, tableDefinitionKey, facetDefinitionKey, entityType);
694
+ // add the custom action and custom action menu definition
695
+ (0, actions_1.configureCustomActionDefinition)(schemaAdjustmentParameters);
695
696
  }
696
697
  /**
697
698
  * Modifies the app schema, adds the right line item settings as derived from the visualization.
698
699
  *
699
- * @param {ViewsParameters} inputParameters - The parameters required for generating and defining the line items in the view schema.
700
- * @param {Definition} viewsDefinition - The existing schema definition for views that will be updated with new view line items.
701
- * @param {string} visualization - The visualization format or mode for the line items, used to determine the associated annotations.
702
- * @param {string} templateAnnotation - The template annotation to infer metadata for the line items.
703
- * @param {GenerateAppSchemaParameters} generateParameters - Parameters essential for schema generation, including OData service metadata.
704
- * @param {Page} page - The page object representing the context in which the view is being generated.
705
- * @returns {void} No return value.
700
+ * @param {ViewsParameters} inputParameters - Parameters containing details needed for the view line item addition, including the app schema, view key, and target annotation.
701
+ * @param {Definition} viewsDefinition - The definition object to which the view line items will be added.
702
+ * @param {string} visualization - The specific visualization type, typically used to determine the annotation term.
703
+ * @param {string} templateAnnotation - Annotation path or type related to the template.
704
+ * @param generateParameters - list of API input parameters
705
+ * @param generateParameters.serviceAVT - OData service AVT information
706
+ * @param generateParameters.entityType - entity type of the current page
707
+ * @param {Page} page - Represents the page in the application's structure where the view line items are to be added.
708
+ * @param app - the application object containing manifest and other app-specific information.
709
+ * @param {ExtensionLogger} logger - Logger for recording informational or error messages during the schema adjustment process.
706
710
  */
707
- function addViewLineItems(inputParameters, viewsDefinition, visualization, templateAnnotation, { serviceAVT, entityType }, page) {
711
+ function addViewLineItems(inputParameters, viewsDefinition, visualization, templateAnnotation, { serviceAVT, entityType }, page, app, logger) {
708
712
  const tableId = `${ux_specification_types_1.DefinitionName.LRTableView}<${inputParameters.viewKey}>`;
709
- const viewId = `${ux_specification_types_1.DefinitionName.LineItemsOfView}::${inputParameters.viewKey}`;
713
+ const schemaIdForColumns = `${ux_specification_types_1.DefinitionName.LineItemsOfView}::${inputParameters.viewKey}`;
714
+ const schemaIdForActions = `${ux_specification_types_1.DefinitionName.Actions}<${schemaIdForColumns}>`;
710
715
  const lrTableView = (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.LRTableView, inputParameters.viewKey, inputParameters.appSchema);
711
716
  delete lrTableView[ux_specification_types_1.SchemaTag.isViewNode];
712
717
  lrTableView[ux_specification_types_1.SchemaTag.annotationPath] = inputParameters.targetAnnotation;
@@ -717,14 +722,14 @@ function addViewLineItems(inputParameters, viewsDefinition, visualization, templ
717
722
  lrTableView['entitySet'] = inputParameters.entitySet;
718
723
  }
719
724
  //Copy toolbar
720
- (0, common_1.addDefinitionRef)(lrTableView.properties.toolBar, ux_specification_types_1.DefinitionName.ToolBar, viewId);
725
+ (0, common_1.addDefinitionRef)(lrTableView.properties.toolBar, ux_specification_types_1.DefinitionName.ToolBar, schemaIdForColumns);
721
726
  const title = `Table View (key: ${inputParameters.viewKey})`;
722
727
  viewsDefinition.properties[inputParameters.viewKey] = {
723
728
  $ref: `${common_1.DEFINITION_LINK_PREFIX}${tableId}`,
724
729
  description: inputParameters.title || title,
725
730
  title
726
731
  };
727
- (0, common_1.addDefinitionRef)(lrTableView.properties.columns, viewId);
732
+ (0, common_1.addDefinitionRef)(lrTableView.properties.columns, schemaIdForColumns);
728
733
  lrTableView.properties.annotationPath[ux_specification_types_1.SchemaTag.hidden] = true;
729
734
  lrTableView.properties.index[ux_specification_types_1.SchemaTag.hidden] = true;
730
735
  lrTableView.properties.entitySet[ux_specification_types_1.SchemaTag.hidden] = true;
@@ -735,25 +740,47 @@ function addViewLineItems(inputParameters, viewsDefinition, visualization, templ
735
740
  lineItemAnnotation: inputParameters.targetEntityType?.annotations.UI[annotationTerm],
736
741
  entityType: inputParameters.targetEntityType,
737
742
  oDataServiceAVT: serviceAVT,
738
- lineItemId: viewId
743
+ lineItemId: schemaIdForColumns
739
744
  };
740
745
  (0, utils_2.addLineItemsTypeToSchema)(dataForLineItem, ux_specification_types_1.DefinitionName.ViewTableColumn, ux_specification_types_1.DefinitionName.ViewCustomColumn, ux_specification_types_1.DefinitionName.ViewCustomAction);
746
+ // Table toolbar actions with custom actions
747
+ const sectionIdPrefix = inputParameters.entitySet ? `/${inputParameters.entitySet}/` : '';
748
+ const sectionIdInManifest = `${sectionIdPrefix}@${"com.sap.vocabularies.UI.v1.LineItem" /* UIAnnotationTerms.LineItem */}${visualization.split(ux_specification_types_1.Visualization.LineItem)[1]}`;
749
+ const customActionDefinitionKey = `${ux_specification_types_1.DefinitionName.ViewCustomAction}<${schemaIdForColumns}>`;
750
+ // Anchor selection
751
+ (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewCustomActionPosition, schemaIdForColumns, inputParameters.appSchema);
752
+ const customActionPositionDefinitionKey = `${ux_specification_types_1.DefinitionName.ViewCustomActionPosition}<${schemaIdForColumns}>`;
753
+ const customActionDefinition = inputParameters.appSchema.definitions[customActionDefinitionKey];
754
+ customActionDefinition.properties.position.$ref =
755
+ `${common_1.DEFINITION_LINK_PREFIX}${customActionPositionDefinitionKey}`;
741
756
  const schemaAdjustmentParameters = {
757
+ logger: logger,
742
758
  appSchema: inputParameters.appSchema,
743
- v4Page: page.getPage(),
744
- tableDefinitionId: tableId,
745
- facetDefinitionId: viewId,
759
+ v4Page: page.target,
760
+ tableDefinitionKey: tableId,
761
+ facetDefinitionKey: schemaIdForColumns,
746
762
  viewKey: inputParameters.viewKey,
747
763
  entityType: inputParameters.targetEntityType || entityType,
748
- dataForLineItem
764
+ dataForLineItem,
765
+ sectionActionsDefinitionKey: schemaIdForActions,
766
+ scopedCustomActionDefinitionKey: customActionDefinitionKey,
767
+ customActionDefinitionName: ux_specification_types_1.DefinitionName.ViewCustomAction,
768
+ sectionIdInManifest,
769
+ customActionPosition: customActionPositionDefinitionKey
749
770
  };
750
- applyLRTableSchemaAdjustments(schemaAdjustmentParameters);
771
+ applyLRSchemaAdjustments(schemaAdjustmentParameters);
751
772
  // Add "manifestPath" for table properties
752
773
  addManifestPathsToPropertiesLR(inputParameters.appSchema, ux_specification_types_1.DefinitionName.LRTableView, lrTableView, {
753
- pageName: page.getPage().id,
754
- manifest: page.getApp().manifest,
755
- targetAnnotation: inputParameters.targetAnnotation
756
- });
774
+ pageName: page.target.id,
775
+ manifest: app.manifest,
776
+ targetAnnotation: inputParameters.targetAnnotation,
777
+ viewConfig: {
778
+ key: inputParameters.viewKey,
779
+ entitySet: inputParameters.entitySet
780
+ }
781
+ }, true);
782
+ // Add "manifestPath" for view actions
783
+ (0, ListReportUtils_1.addManifestPathsToDefinitionPropertiesLR)(inputParameters.appSchema, page.target.id, schemaIdForActions, app.getManifest(), inputParameters.targetAnnotation, inputParameters.entitySet);
757
784
  }
758
785
  /**
759
786
  * Adds the schema tags to a given view.
@@ -772,57 +799,30 @@ function addTagsToView(viewsDefinition, viewKey, namespace, view) {
772
799
  viewsDefinition.properties[viewKey][ux_specification_types_1.SchemaTag.key] = viewKey;
773
800
  viewsDefinition.properties[viewKey][ux_specification_types_1.SchemaTag.keys] = [{ name: ux_specification_types_1.SchemaKeyName.key, value: viewKey }];
774
801
  }
775
- /**
776
- * Adjusts the entity type if a different entity set is maintained for a view.
777
- *
778
- * @param {EntitySet} entitySet - actual entity set (AVT information)
779
- * @param view - the current view in manifest
780
- * @param {GenerateAppSchemaParameters} generateParameters - list of API input parameters
781
- * @returns the target entity type
782
- */
783
- function getTargetEntityType(entitySet, view, generateParameters) {
784
- let targetEntityType = generateParameters.entityType;
785
- let viewEntitySet = entitySet;
786
- if (view['entitySet'] && view['entitySet'] !== entitySet.name) {
787
- viewEntitySet = generateParameters.serviceAVT?.entitySets.find((es) => {
788
- return es.name === view['entitySet'];
789
- });
790
- targetEntityType = viewEntitySet.entityType;
791
- }
792
- return targetEntityType;
793
- }
794
802
  /**
795
803
  * Adds view custom extensions - custom column and custom action definitions.
796
804
  *
797
805
  * @param commonInputParameters - list of input parameters as collected by the calling instance
798
806
  * @param visualization - visualization of the annotation
799
807
  * @param v4Page - the given page in manifest
808
+ * @param manifest - The application manifest
800
809
  * @param logger - extension logger
801
810
  */
802
- function addViewCustomExtensions(commonInputParameters, visualization, v4Page, logger) {
803
- const sectionId = `${ux_specification_types_1.DefinitionName.LineItemsOfView}::${commonInputParameters.viewKey}`;
811
+ function addViewCustomExtensions(commonInputParameters, visualization, v4Page, manifest, logger) {
812
+ const schemaIdForColumns = `${ux_specification_types_1.DefinitionName.LineItemsOfView}::${commonInputParameters.viewKey}`;
804
813
  const sectionIdPrefix = commonInputParameters.entitySet ? `/${commonInputParameters.entitySet}/` : '';
805
814
  const sectionIdInManifest = `${sectionIdPrefix}@${"com.sap.vocabularies.UI.v1.LineItem" /* UIAnnotationTerms.LineItem */}${visualization.split(ux_specification_types_1.Visualization.LineItem)[1]}`;
806
- const viewColumnDefinition = (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewCustomColumn, sectionId, commonInputParameters.appSchema);
807
- (0, common_1.addDefinitionRef)(viewColumnDefinition.properties.position, ux_specification_types_1.DefinitionName.ViewPosition, sectionId);
808
- (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewPosition, sectionId, commonInputParameters.appSchema);
809
- (0, utils_2.addCustomColumnDefinition)(commonInputParameters.appSchema, v4Page, logger, `${ux_specification_types_1.DefinitionName.ViewCustomColumn}<${sectionId}>`, sectionId, sectionIdInManifest);
810
- (0, utils_2.addFragmentEnumForAnchor)(commonInputParameters.appSchema, sectionId, v4Page, `${ux_specification_types_1.DefinitionName.ViewPosition}<${sectionId}>`, sectionIdInManifest);
815
+ const viewColumnDefinition = (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewCustomColumn, schemaIdForColumns, commonInputParameters.appSchema);
816
+ (0, common_1.addDefinitionRef)(viewColumnDefinition.properties.position, ux_specification_types_1.DefinitionName.ViewPosition, schemaIdForColumns);
817
+ (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewPosition, schemaIdForColumns, commonInputParameters.appSchema);
818
+ (0, utils_2.addCustomColumnDefinition)(commonInputParameters.appSchema, v4Page, logger, `${ux_specification_types_1.DefinitionName.ViewCustomColumn}<${schemaIdForColumns}>`, schemaIdForColumns, sectionIdInManifest);
819
+ (0, utils_2.addFragmentEnumForAnchor)(commonInputParameters.appSchema, schemaIdForColumns, v4Page, `${ux_specification_types_1.DefinitionName.ViewPosition}<${schemaIdForColumns}>`, sectionIdInManifest);
820
+ // Add "manifestPath" for view columns
821
+ (0, ListReportUtils_1.addManifestPathsToDefinitionPropertiesLR)(commonInputParameters.appSchema, v4Page.id, schemaIdForColumns, manifest, commonInputParameters.targetAnnotation, commonInputParameters.entitySet);
811
822
  // Remove generic position
812
823
  if (commonInputParameters.appSchema.definitions.Position) {
813
824
  delete commonInputParameters.appSchema.definitions.Position;
814
825
  }
815
- // Table toolbar actions with custom actions
816
- const schemaIdForToolbarActions = `${ux_specification_types_1.DefinitionName.Actions}<${sectionId}>`;
817
- const customActionDefinitionKey = `${ux_specification_types_1.DefinitionName.ViewCustomAction}<${sectionId}>`;
818
- (0, utils_2.addCustomActionDefinition)(commonInputParameters.appSchema, v4Page, logger, customActionDefinitionKey, schemaIdForToolbarActions, sectionIdInManifest);
819
- // Anchor selection
820
- (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewCustomActionPosition, sectionId, commonInputParameters.appSchema);
821
- const customActionPositionDefinitionKey = `${ux_specification_types_1.DefinitionName.ViewCustomActionPosition}<${sectionId}>`;
822
- const customActionDefinition = commonInputParameters.appSchema.definitions[customActionDefinitionKey];
823
- customActionDefinition.properties.position.$ref =
824
- `${common_1.DEFINITION_LINK_PREFIX}${customActionPositionDefinitionKey}`;
825
- (0, utils_2.addEnumForActionAnchor)(commonInputParameters.appSchema, schemaIdForToolbarActions, customActionPositionDefinitionKey);
826
826
  }
827
827
  /**
828
828
  * Adds definition parts to a LR View (LineItem/Chart).
@@ -835,18 +835,19 @@ function addViewCustomExtensions(commonInputParameters, visualization, v4Page, l
835
835
  * @param generateParameters.entityType - entity type of the current page
836
836
  * @param generateParameters.logger - extension logger
837
837
  * @param page - the current page object
838
+ * @param app - the application object containing manifest and other app-specific information.
838
839
  * @param uiAnnotations - UI annotations of the given entityType
839
840
  * @param view - the given view
840
841
  */
841
- function addLRViewParts(visualization, viewsDefinition, commonInputParameters, { serviceAVT, entityType, logger }, page, uiAnnotations, view) {
842
+ function addLRViewParts(visualization, viewsDefinition, commonInputParameters, { serviceAVT, entityType, logger }, page, app, uiAnnotations, view) {
842
843
  if (visualization?.indexOf(ux_specification_types_1.Visualization.LineItem) > -1) {
843
844
  //Add Line item view
844
- addViewLineItems(commonInputParameters, viewsDefinition, visualization, commonInputParameters.targetAnnotation, { serviceAVT, entityType }, page);
845
- addViewCustomExtensions(commonInputParameters, visualization, page.getPage(), logger);
845
+ addViewLineItems(commonInputParameters, viewsDefinition, visualization, commonInputParameters.targetAnnotation, { serviceAVT, entityType }, page, app, logger);
846
+ addViewCustomExtensions(commonInputParameters, visualization, page.target, app.getManifest(), logger);
846
847
  }
847
848
  else if (visualization?.indexOf('Chart') > -1) {
848
849
  //Add Chart view
849
- addViewChart(commonInputParameters, uiAnnotations, commonInputParameters.appSchema, viewsDefinition, commonInputParameters.viewKey, commonInputParameters.title);
850
+ addViewChart(commonInputParameters, uiAnnotations, commonInputParameters.appSchema, viewsDefinition, commonInputParameters.viewKey, commonInputParameters.title, page, app);
850
851
  }
851
852
  else if (view['template']) {
852
853
  const titleOnHover = view['label'] || `Custom View (key: ${commonInputParameters.viewKey})`;
@@ -867,173 +868,19 @@ function addLRViewParts(visualization, viewsDefinition, commonInputParameters, {
867
868
  };
868
869
  }
869
870
  }
870
- /**
871
- * Add list report views to the app-specific schema.
872
- *
873
- * @param appSchema - app-specific JSON schema
874
- * @param viewsPaths - views' paths' section in the manifest
875
- * @param generateParameters - list of API input parameters
876
- * @param page - the current page object
877
- * @param tableDefinitionName - The name of the table definition in the schema
878
- */
879
- function addLRViews(appSchema, viewsPaths, generateParameters, page, tableDefinitionName) {
880
- const tableDefinition = appSchema.definitions[tableDefinitionName];
881
- tableDefinition.properties = {
882
- annotationPath: tableDefinition.properties.annotationPath,
883
- initialLoad: tableDefinition.properties.initialLoad,
884
- views: tableDefinition.properties.views
885
- };
886
- const viewsDefinition = appSchema.definitions.MultiTableModeV4;
887
- for (const view of viewsPaths) {
888
- if (!view[ux_specification_types_1.SchemaTag.key]) {
889
- continue;
890
- }
891
- let navPropName = undefined;
892
- const targetEntityType = getTargetEntityType(generateParameters.entitySet, view, generateParameters);
893
- const uiAnnotations = targetEntityType?.annotations.UI;
894
- const { visualization, targetAnnotation, namespace, title } = analyzeViewAnnotation(view?.[ux_specification_types_1.SchemaTag.annotationPath], uiAnnotations, generateParameters.serviceAVT, view[ux_specification_types_1.SchemaTag.key], undefined, generateParameters.logger);
895
- if (view['entitySet']) {
896
- navPropName = generateParameters.entityType.navigationProperties.find((np) => {
897
- return np.targetTypeName === namespace;
898
- })?.name;
899
- }
900
- const viewKey = (0, common_1.prepareRef)(view[ux_specification_types_1.SchemaTag.key]);
901
- const commonInputParameters = {
902
- viewKey,
903
- appSchema,
904
- targetAnnotation,
905
- navPropName,
906
- targetEntityType,
907
- title,
908
- entitySet: view['entitySet']
909
- };
910
- addLRViewParts(visualization, viewsDefinition, commonInputParameters, generateParameters, page, uiAnnotations, view);
911
- addTagsToView(viewsDefinition, viewKey, namespace, view);
912
- }
913
- }
914
- /**
915
- * Adapts the table definition in schema.
916
- * Evaluates the path depending on if defaultTemplateAnnotationPath or Selection-/PresentationVariant is present.
917
- *
918
- * @param appSchema - the app-specific JSON schema
919
- * @param generateParameters - list of API input parameters
920
- * @param templateAnnotation - defaultTemplateAnnotationPath as registered in manifest
921
- * @param v4Page - the given page in manifest
922
- * @param alias - alias definition for the UI vocabulary
923
- * @param tableDefinitionName - The name of the table definition in the schema
924
- */
925
- function adaptTableDefinition(appSchema, generateParameters, templateAnnotation, v4Page, alias, tableDefinitionName) {
926
- //here: tableDefinitionName = DefinitionName.Table
927
- const tableDefinition = appSchema.definitions[tableDefinitionName];
928
- const { visualization, targetAnnotation, namespace } = analyzeViewAnnotation(templateAnnotation, generateParameters.entityType?.annotations.UI, generateParameters.serviceAVT, undefined, ux_specification_types_1.Visualization.LineItem, generateParameters.logger);
929
- if (visualization) {
930
- const annotationTerm = visualization.split('.')[1];
931
- const annotationTermInSchema = `${ux_specification_types_1.DefinitionName.LineItems}OfSPV::${(0, common_1.prepareRef)(annotationTerm)}`;
932
- const spvTable = (appSchema.definitions[`${tableDefinitionName}SPV`] = JSON.parse(JSON.stringify(appSchema.definitions[tableDefinitionName])));
933
- delete spvTable[ux_specification_types_1.SchemaTag.isViewNode];
934
- (0, common_1.addDefinitionRef)(spvTable.properties.toolBar, ux_specification_types_1.DefinitionName.ToolBar, annotationTermInSchema);
935
- // Switch from generic column to specific definition
936
- spvTable[ux_specification_types_1.SchemaTag.annotationPath] = targetAnnotation;
937
- spvTable.properties.columns = {};
938
- (0, common_1.addDefinitionRef)(spvTable.properties.columns, annotationTermInSchema);
939
- delete tableDefinition.properties;
940
- (0, common_1.addDefinitionRef)(tableDefinition, `${tableDefinitionName}SPV`);
941
- tableDefinition[ux_specification_types_1.SchemaTag.annotationPath] = `/${namespace}/@${templateAnnotation}`;
942
- const lineItemAnnotation = generateParameters.entityType?.annotations.UI[annotationTerm];
943
- if (!lineItemAnnotation) {
944
- (0, extensionLogger_1.log)(generateParameters.logger, {
945
- severity: "error" /* LogSeverity.Error */,
946
- message: i18next_1.default.t('NOTARGET', { target: annotationTerm })
947
- });
948
- }
949
- const dataForLineItem = {
950
- isObjectPage: false,
951
- appSchema,
952
- lineItemAnnotation,
953
- entityType: generateParameters.entityType,
954
- oDataServiceAVT: generateParameters.serviceAVT,
955
- lineItemId: annotationTermInSchema
956
- };
957
- (0, utils_2.addLineItemsTypeToSchema)(dataForLineItem);
958
- const annotationTermQualifier = annotationTerm.split('#')?.[1];
959
- const sectionIdInManifest = annotationTermQualifier
960
- ? `@${"com.sap.vocabularies.UI.v1.LineItem" /* UIAnnotationTerms.LineItem */}#${annotationTermQualifier}`
961
- : `@${"com.sap.vocabularies.UI.v1.LineItem" /* UIAnnotationTerms.LineItem */}`;
962
- (0, utils_2.addCustomColumnDefinition)(appSchema, v4Page, generateParameters.logger, undefined, annotationTermInSchema, sectionIdInManifest);
963
- (0, utils_2.addFragmentEnumForAnchor)(appSchema, annotationTermInSchema, v4Page, undefined, sectionIdInManifest);
964
- const schemaAdjustmentParameters = {
965
- appSchema,
966
- v4Page,
967
- tableDefinitionId: `${tableDefinitionName}SPV`,
968
- facetDefinitionId: annotationTermInSchema,
969
- dataForLineItem
970
- };
971
- applyLRTableSchemaAdjustments(schemaAdjustmentParameters);
972
- // Table toolbar actions with custom actions
973
- const schemaIdForToolbarActions = `${ux_specification_types_1.DefinitionName.Actions}<${annotationTermInSchema}>`;
974
- const customColumnDefinitionName = (0, common_1.getCustomExtensionDefinitionName)(appSchema, annotationTermInSchema, ux_specification_types_1.DefinitionName.CustomTableAction);
975
- (0, utils_2.addCustomActionDefinition)(appSchema, v4Page, generateParameters.logger, (0, common_1.getDefinitionKey)(customColumnDefinitionName), schemaIdForToolbarActions, sectionIdInManifest);
976
- (0, utils_2.addEnumForActionAnchor)(appSchema, schemaIdForToolbarActions, ux_specification_types_1.DefinitionName.CustomActionPosition);
977
- }
978
- else {
979
- tableDefinition.properties.toolBar['$ref'] = `${common_1.DEFINITION_LINK_PREFIX}${ux_specification_types_1.DefinitionName.ToolBarLR}`;
980
- // Switch from generic column to specific definition
981
- (0, common_1.addDefinitionRef)(tableDefinition.properties.columns, ux_specification_types_1.DefinitionName.LineItems);
982
- const lineItemAnnotation = generateParameters.entityType?.annotations?.[alias]?.LineItem;
983
- if (!lineItemAnnotation && !v4Page.options?.settings?.views?.paths) {
984
- (0, extensionLogger_1.log)(generateParameters.logger, {
985
- severity: "error" /* LogSeverity.Error */,
986
- message: i18next_1.default.t('NOLINEITEMS')
987
- });
988
- }
989
- const dataForLineItem = {
990
- isObjectPage: false,
991
- appSchema,
992
- lineItemAnnotation,
993
- entityType: generateParameters.entityType,
994
- oDataServiceAVT: generateParameters.serviceAVT,
995
- lineItemId: ux_specification_types_1.DefinitionName.LineItems
996
- };
997
- (0, utils_2.addLineItemsTypeToSchema)(dataForLineItem);
998
- (0, utils_2.addCustomColumnDefinition)(appSchema, v4Page, generateParameters.logger);
999
- (0, utils_2.addFragmentEnumForAnchor)(appSchema, ux_specification_types_1.DefinitionName.LineItems, v4Page);
1000
- const schemaAdjustmentParameters = {
1001
- appSchema,
1002
- v4Page,
1003
- tableDefinitionId: tableDefinitionName,
1004
- facetDefinitionId: ux_specification_types_1.DefinitionName.LineItems,
1005
- dataForLineItem
1006
- };
1007
- applyLRTableSchemaAdjustments(schemaAdjustmentParameters);
1008
- if (lineItemAnnotation && !v4Page.options?.settings?.views?.paths) {
1009
- tableDefinition[ux_specification_types_1.SchemaTag.annotationPath] = (0, common_1.createAnnotationPath)(generateParameters.entityType?.fullyQualifiedName, lineItemAnnotation.term, lineItemAnnotation.qualifier);
1010
- }
1011
- // Table toolbar actions with custom actions
1012
- const schemaIdForActions = `${ux_specification_types_1.DefinitionName.Actions}<${(0, common_1.prepareRef)(ux_specification_types_1.DefinitionName.LineItems)}>`;
1013
- (0, utils_2.addCustomActionDefinition)(appSchema, v4Page, generateParameters.logger, undefined, schemaIdForActions);
1014
- (0, utils_2.addEnumForActionAnchor)(appSchema, schemaIdForActions, ux_specification_types_1.DefinitionName.CustomActionPosition);
1015
- }
1016
- // Add "manifestPath" for table properties
1017
- addManifestPathsToPropertiesLR(appSchema, tableDefinitionName, tableDefinition, {
1018
- pageName: v4Page.id,
1019
- manifest: generateParameters.manifest,
1020
- targetAnnotation
1021
- });
1022
- }
1023
871
  /**
1024
872
  * Checks for the default annotation path to use for LR table.
1025
873
  *
1026
- * @param v4Page - actual page in the manifest
1027
- * @param entityType - actual entity type (AVT information)
1028
- * @param templateType - The type of template being used (e.g., ListReportObjectPageV4 or AnalyticalListPageV4)
874
+ * @param page - the current page object
1029
875
  * @returns annotation term
1030
876
  */
1031
- function getDefaultAnnotationPath(v4Page, entityType, templateType) {
1032
- if (v4Page.options.settings?.views?.paths && templateType === ux_specification_types_1.TemplateType.ListReportObjectPageV4) {
877
+ function getDefaultAnnotationPath(page) {
878
+ const { entity: { type: entityType }, template: { type: templateType }, target } = page;
879
+ if (target?.options?.settings?.views?.paths && templateType === ux_specification_types_1.TemplateType.ListReportObjectPageV4) {
1033
880
  return;
1034
881
  }
1035
- if (v4Page.options.settings?.defaultTemplateAnnotationPath) {
1036
- return v4Page.options.settings.defaultTemplateAnnotationPath;
882
+ if (target?.options?.settings?.defaultTemplateAnnotationPath) {
883
+ return target?.options?.settings.defaultTemplateAnnotationPath;
1037
884
  }
1038
885
  if (templateType === ux_specification_types_1.TemplateType.ListReportObjectPageV4) {
1039
886
  return (entityType?.annotations.UI?.SelectionPresentationVariant?.term ||
@@ -1073,8 +920,9 @@ function addHeaderActions(appSchema, v4Page, logger) {
1073
920
  * @param definitionName - The name of the definition/class whose properties are being processed.
1074
921
  * @param definition - The definition object containing property schemas.
1075
922
  * @param pathParams - Additional context required to compute manifest paths.
923
+ * @param handleRelative - A flag indicating whether to use relative paths for definition properties.
1076
924
  */
1077
- function addManifestPathsToPropertiesLR(appSchema, definitionName, definition, pathParams) {
925
+ function addManifestPathsToPropertiesLR(appSchema, definitionName, definition, pathParams, handleRelative = false) {
1078
926
  let targetAnnotation = undefined;
1079
927
  if (pathParams.targetAnnotation) {
1080
928
  const annotationParts = pathParams.targetAnnotation?.split('/');
@@ -1084,10 +932,19 @@ function addManifestPathsToPropertiesLR(appSchema, definitionName, definition, p
1084
932
  // Default annotation path
1085
933
  targetAnnotation = `@${"com.sap.vocabularies.UI.v1.LineItem" /* UIAnnotationTerms.LineItem */}`;
1086
934
  }
935
+ const entitySet = pathParams.viewConfig?.entitySet;
936
+ if (entitySet) {
937
+ targetAnnotation = entitySet ? `/${entitySet}/${targetAnnotation}` : targetAnnotation;
938
+ }
1087
939
  (0, utils_1.addManifestPathsToProperties)(appSchema, definitionName, definition, {
1088
940
  ...pathParams,
1089
- pathsParts: [targetAnnotation, '', targetAnnotation]
1090
- });
941
+ pathsParts: [
942
+ pathParams.sectionId ? undefined : targetAnnotation,
943
+ pathParams.columnKey ? pathParams.columnKey : '',
944
+ targetAnnotation,
945
+ pathParams.viewConfig
946
+ ]
947
+ }, handleRelative);
1091
948
  }
1092
949
  /**
1093
950
  * Adds 'manifestPath' to static nodes in schema.
@@ -1096,6 +953,8 @@ function addManifestPathsToPropertiesLR(appSchema, definitionName, definition, p
1096
953
  * @param pathParams - Additional context required to compute manifest paths.
1097
954
  */
1098
955
  function addManifestPathsToStaticNodes(appSchema, pathParams) {
956
+ // Add "manifestPath" for current page
957
+ appSchema['manifestPath'] = (0, utils_1.getPageManifestPath)(pathParams);
1099
958
  // Root level - rules stored on page class level
1100
959
  addManifestPathsToPropertiesLR(appSchema, ux_specification_types_1.PageTypeV4.ListReport, appSchema, pathParams);
1101
960
  // Other definitions
@@ -1120,17 +979,24 @@ class ListReportPage {
1120
979
  * @param contextPath - context path of the page
1121
980
  */
1122
981
  constructor(generateParameters, schema, templateName, contextPath) {
1123
- this.schema = new AppSchema_1.AppSchema(schema);
1124
- this.app = (0, App_1.createApp)(generateParameters.manifest, generateParameters.serviceAVT, generateParameters.logger);
1125
- this.page = new Page_1.Page(this.app, { name: templateName, type: generateParameters.templateType }, generateParameters.entitySet, contextPath);
982
+ const template = { name: templateName, type: generateParameters.templateType };
983
+ this.appSchema = new sync_rules_1.AppSchema(schema);
984
+ this.app = (0, sync_rules_1.createApp)(generateParameters.manifest, generateParameters.serviceAVT, generateParameters.logger);
985
+ this.page = new sync_rules_1.Page(this.app, template, generateParameters.entitySet, generateParameters.entityType, contextPath);
986
+ this.logger = this.app.logger;
987
+ this.page.addConfig({
988
+ isALP: template.type === ux_specification_types_1.TemplateType.AnalyticalListPageV4,
989
+ views: this.page.target?.options?.settings.views,
990
+ defaultAnnotation: getDefaultAnnotationPath(this.page)
991
+ });
1126
992
  }
1127
993
  /**
1128
994
  * Cleans up the schema by hiding specific properties and removing unnecessary definitions.
1129
995
  */
1130
996
  cleanup() {
1131
- this.schema.hide(this.schema.getRootProperty([ux_specification_types_1.PropertyName.defaultTemplateAnnotationPath]));
1132
- this.schema.cleanup(['GenericColumns', 'Action']);
1133
- (0, common_1.updatePropertyIndices)(this.schema.getSchema(), ROOT_PROPERTIES_ORDER);
997
+ this.appSchema.hide(this.appSchema.getRootProperty([ux_specification_types_1.PropertyName.defaultTemplateAnnotationPath]));
998
+ this.appSchema.cleanup(['GenericColumns', 'Action']);
999
+ (0, common_1.updatePropertyIndices)(this.appSchema.get(), ROOT_PROPERTIES_ORDER);
1134
1000
  }
1135
1001
  /**
1136
1002
  * Generates the finalized schema for the List Report page.
@@ -1138,20 +1004,33 @@ class ListReportPage {
1138
1004
  * @returns The finalized schema for List Report page
1139
1005
  */
1140
1006
  generate() {
1141
- new ListReportUtils_1.GeneralListReportSettings(this.schema, this.page, this.app.getLogger()).instantiate();
1142
- if (!this.page.getPage()) {
1143
- return this.schema.finalize();
1007
+ const params = {
1008
+ appSchema: this.appSchema,
1009
+ app: this.app,
1010
+ page: this.page,
1011
+ logger: this.logger
1012
+ };
1013
+ new ListReportUtils_1.GeneralListReportSettings(params).init();
1014
+ if (!this.page.target) {
1015
+ return this.appSchema.get();
1144
1016
  }
1145
- new ListReportUtils_1.Header(this.schema, this.page, this.app.getLogger()).instantiate();
1146
- new ListReportUtils_1.FilterBar(this.schema, this.page, this.app.getLogger()).instantiate();
1147
- new ListReportUtils_1.TableAndViews(this.schema, this.page, this.app.getLogger()).instantiate();
1017
+ new controls_1.Header(params).init();
1018
+ new controls_1.HeaderActions(params).init();
1019
+ new controls_1.CustomHeaderAction(params).init();
1020
+ new ListReportUtils_1.FilterBar(params).init();
1021
+ new ListReportUtils_1.TableAndViews(params).init();
1148
1022
  // Add "manifestPath" for properties in static nodes
1149
- addManifestPathsToStaticNodes(this.schema.getSchema(), {
1150
- pageName: this.page.getPage().id,
1023
+ addManifestPathsToStaticNodes(this.appSchema.get(), {
1024
+ pageName: this.page.target.id,
1151
1025
  manifest: this.app.getManifest()
1152
1026
  });
1027
+ // Add "manifestPath" for custom header actions
1028
+ const definitionNames = [ux_specification_types_1.DefinitionName.HeaderActions];
1029
+ definitionNames.forEach((definitionName) => {
1030
+ (0, ListReportUtils_1.addManifestPathsToDefinitionPropertiesLR)(this.appSchema.get(), this.page.target.id, definitionName, this.app.getManifest());
1031
+ });
1153
1032
  this.cleanup();
1154
- return this.schema.finalize();
1033
+ return this.appSchema.get();
1155
1034
  }
1156
1035
  }
1157
1036
  /**
@@ -1168,7 +1047,7 @@ function generateListReportSchemaV4(generateParameters, genericSchema, templateN
1168
1047
  const listReport = new ListReportPage(generateParameters, genericSchema, templateName, contextPath);
1169
1048
  if (!listReport.app.getManifest()) {
1170
1049
  listReport.cleanup();
1171
- return listReport.schema.finalize();
1050
+ return listReport.appSchema.get();
1172
1051
  }
1173
1052
  return listReport.generate();
1174
1053
  }