@sap/ux-specification 1.142.2 → 1.142.4

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 (235) hide show
  1. package/CHANGELOG.md +117 -43
  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 +288 -282
  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 +128 -42
  21. package/dist/schemas/v4/ListReportConfig.json +24 -6
  22. package/dist/schemas/v4/ObjectPageConfig.json +32 -8
  23. package/dist/specification/package.json +14 -12
  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.map +1 -1
  31. package/dist/specification/scripts/macros/corrections.js +36 -1
  32. package/dist/specification/scripts/macros/corrections.js.map +1 -1
  33. package/dist/specification/scripts/macros/schema.d.ts.map +1 -1
  34. package/dist/specification/scripts/macros/schema.js +13 -0
  35. package/dist/specification/scripts/macros/schema.js.map +1 -1
  36. package/dist/specification/src/api.js +1 -1
  37. package/dist/specification/src/i18n/i18n.d.ts.map +1 -1
  38. package/dist/specification/src/i18n/i18n.js +2 -1
  39. package/dist/specification/src/i18n/i18n.js.map +1 -1
  40. package/dist/specification/src/sync/common/ManifestDrivenSchemaProcessor.d.ts +8 -1
  41. package/dist/specification/src/sync/common/ManifestDrivenSchemaProcessor.d.ts.map +1 -1
  42. package/dist/specification/src/sync/common/ManifestDrivenSchemaProcessor.js +10 -7
  43. package/dist/specification/src/sync/common/ManifestDrivenSchemaProcessor.js.map +1 -1
  44. package/dist/specification/src/sync/common/decoration/decorator-paths.d.ts +503 -0
  45. package/dist/specification/src/sync/common/decoration/decorator-paths.d.ts.map +1 -0
  46. package/dist/specification/src/sync/common/decoration/decorator-paths.js +497 -0
  47. package/dist/specification/src/sync/common/decoration/decorator-paths.js.map +1 -0
  48. package/dist/specification/src/sync/common/decoration/decorators.d.ts +116 -24
  49. package/dist/specification/src/sync/common/decoration/decorators.d.ts.map +1 -1
  50. package/dist/specification/src/sync/common/decoration/decorators.js +308 -78
  51. package/dist/specification/src/sync/common/decoration/decorators.js.map +1 -1
  52. package/dist/specification/src/sync/common/decoration/index.d.ts +1 -0
  53. package/dist/specification/src/sync/common/decoration/index.d.ts.map +1 -1
  54. package/dist/specification/src/sync/common/decoration/index.js +1 -0
  55. package/dist/specification/src/sync/common/decoration/index.js.map +1 -1
  56. package/dist/specification/src/sync/common/dist_tag.json +8 -3
  57. package/dist/specification/src/sync/common/generate/objectPage.d.ts.map +1 -1
  58. package/dist/specification/src/sync/common/generate/objectPage.js +3 -1
  59. package/dist/specification/src/sync/common/generate/objectPage.js.map +1 -1
  60. package/dist/specification/src/sync/common/i18n.json +2 -1
  61. package/dist/specification/src/sync/common/rules.d.ts +25 -0
  62. package/dist/specification/src/sync/common/rules.d.ts.map +1 -1
  63. package/dist/specification/src/sync/common/rules.js +27 -2
  64. package/dist/specification/src/sync/common/rules.js.map +1 -1
  65. package/dist/specification/src/sync/common/utils.d.ts +22 -6
  66. package/dist/specification/src/sync/common/utils.d.ts.map +1 -1
  67. package/dist/specification/src/sync/common/utils.js +122 -18
  68. package/dist/specification/src/sync/common/utils.js.map +1 -1
  69. package/dist/specification/src/sync/v2/generate/analyticalListReport.d.ts.map +1 -1
  70. package/dist/specification/src/sync/v2/generate/analyticalListReport.js +9 -7
  71. package/dist/specification/src/sync/v2/generate/analyticalListReport.js.map +1 -1
  72. package/dist/specification/src/sync/v2/generate/listReport.d.ts.map +1 -1
  73. package/dist/specification/src/sync/v2/generate/listReport.js +3 -1
  74. package/dist/specification/src/sync/v2/generate/listReport.js.map +1 -1
  75. package/dist/specification/src/sync/v2/generate/objectPage.d.ts.map +1 -1
  76. package/dist/specification/src/sync/v2/generate/objectPage.js +58 -2
  77. package/dist/specification/src/sync/v2/generate/objectPage.js.map +1 -1
  78. package/dist/specification/src/sync/v2/generate/overviewPage.d.ts +1 -9
  79. package/dist/specification/src/sync/v2/generate/overviewPage.d.ts.map +1 -1
  80. package/dist/specification/src/sync/v2/generate/overviewPage.js +30 -1
  81. package/dist/specification/src/sync/v2/generate/overviewPage.js.map +1 -1
  82. package/dist/specification/src/sync/v2/import/app/appProvider.d.ts.map +1 -1
  83. package/dist/specification/src/sync/v2/import/app/appProvider.js +2 -0
  84. package/dist/specification/src/sync/v2/import/app/appProvider.js.map +1 -1
  85. package/dist/specification/src/sync/v2/import/pages/analyticalListPage.d.ts +2 -1
  86. package/dist/specification/src/sync/v2/import/pages/analyticalListPage.d.ts.map +1 -1
  87. package/dist/specification/src/sync/v2/import/pages/analyticalListPage.js +5 -0
  88. package/dist/specification/src/sync/v2/import/pages/analyticalListPage.js.map +1 -1
  89. package/dist/specification/src/sync/v2/import/pages/listReport.d.ts +2 -1
  90. package/dist/specification/src/sync/v2/import/pages/listReport.d.ts.map +1 -1
  91. package/dist/specification/src/sync/v2/import/pages/listReport.js +5 -0
  92. package/dist/specification/src/sync/v2/import/pages/listReport.js.map +1 -1
  93. package/dist/specification/src/sync/v2/import/pages/objectPage.d.ts.map +1 -1
  94. package/dist/specification/src/sync/v2/import/pages/objectPage.js +2 -1
  95. package/dist/specification/src/sync/v2/import/pages/objectPage.js.map +1 -1
  96. package/dist/specification/src/sync/v2/import/utils.d.ts +28 -1
  97. package/dist/specification/src/sync/v2/import/utils.d.ts.map +1 -1
  98. package/dist/specification/src/sync/v2/import/utils.js +37 -0
  99. package/dist/specification/src/sync/v2/import/utils.js.map +1 -1
  100. package/dist/specification/src/sync/v2/utils.d.ts +12 -2
  101. package/dist/specification/src/sync/v2/utils.d.ts.map +1 -1
  102. package/dist/specification/src/sync/v2/utils.js +19 -2
  103. package/dist/specification/src/sync/v2/utils.js.map +1 -1
  104. package/dist/specification/src/sync/v4/application.d.ts +31 -2
  105. package/dist/specification/src/sync/v4/application.d.ts.map +1 -1
  106. package/dist/specification/src/sync/v4/application.js +44 -4
  107. package/dist/specification/src/sync/v4/application.js.map +1 -1
  108. package/dist/specification/src/sync/v4/export/controls/FilterBar.d.ts +2 -1
  109. package/dist/specification/src/sync/v4/export/controls/FilterBar.d.ts.map +1 -1
  110. package/dist/specification/src/sync/v4/export/controls/FilterBar.js +2 -1
  111. package/dist/specification/src/sync/v4/export/controls/FilterBar.js.map +1 -1
  112. package/dist/specification/src/sync/v4/export/controls/Header.d.ts +4 -3
  113. package/dist/specification/src/sync/v4/export/controls/Header.d.ts.map +1 -1
  114. package/dist/specification/src/sync/v4/export/controls/Header.js +7 -3
  115. package/dist/specification/src/sync/v4/export/controls/Header.js.map +1 -1
  116. package/dist/specification/src/sync/v4/export/controls/HeaderAction.d.ts +2 -1
  117. package/dist/specification/src/sync/v4/export/controls/HeaderAction.d.ts.map +1 -1
  118. package/dist/specification/src/sync/v4/export/controls/HeaderAction.js +7 -0
  119. package/dist/specification/src/sync/v4/export/controls/HeaderAction.js.map +1 -1
  120. package/dist/specification/src/sync/v4/export/controls/ObjectPageCustomSection.d.ts +2 -1
  121. package/dist/specification/src/sync/v4/export/controls/ObjectPageCustomSection.d.ts.map +1 -1
  122. package/dist/specification/src/sync/v4/export/controls/ObjectPageCustomSection.js +2 -1
  123. package/dist/specification/src/sync/v4/export/controls/ObjectPageCustomSection.js.map +1 -1
  124. package/dist/specification/src/sync/v4/export/controls/ObjectPageTable.d.ts +1 -1
  125. package/dist/specification/src/sync/v4/export/controls/ObjectPageTable.d.ts.map +1 -1
  126. package/dist/specification/src/sync/v4/export/controls/ObjectPageTable.js +0 -13
  127. package/dist/specification/src/sync/v4/export/controls/ObjectPageTable.js.map +1 -1
  128. package/dist/specification/src/sync/v4/export/controls/Table.d.ts +32 -17
  129. package/dist/specification/src/sync/v4/export/controls/Table.d.ts.map +1 -1
  130. package/dist/specification/src/sync/v4/export/controls/Table.js +90 -60
  131. package/dist/specification/src/sync/v4/export/controls/Table.js.map +1 -1
  132. package/dist/specification/src/sync/v4/export/controls/TableColumn.d.ts.map +1 -1
  133. package/dist/specification/src/sync/v4/export/controls/TableColumn.js +2 -2
  134. package/dist/specification/src/sync/v4/export/controls/TableColumn.js.map +1 -1
  135. package/dist/specification/src/sync/v4/export/controls/ToolBarAction.d.ts +2 -1
  136. package/dist/specification/src/sync/v4/export/controls/ToolBarAction.d.ts.map +1 -1
  137. package/dist/specification/src/sync/v4/export/controls/ToolBarAction.js +4 -3
  138. package/dist/specification/src/sync/v4/export/controls/ToolBarAction.js.map +1 -1
  139. package/dist/specification/src/sync/v4/export/export.d.ts.map +1 -1
  140. package/dist/specification/src/sync/v4/export/export.js +25 -3
  141. package/dist/specification/src/sync/v4/export/export.js.map +1 -1
  142. package/dist/specification/src/sync/v4/export/pages/ListReport.js +1 -1
  143. package/dist/specification/src/sync/v4/export/pages/ListReport.js.map +1 -1
  144. package/dist/specification/src/sync/v4/generate/actions.d.ts +1 -1
  145. package/dist/specification/src/sync/v4/generate/actions.d.ts.map +1 -1
  146. package/dist/specification/src/sync/v4/generate/fpm-custom-page/annotations.d.ts.map +1 -1
  147. package/dist/specification/src/sync/v4/generate/fpm-custom-page/annotations.js +20 -12
  148. package/dist/specification/src/sync/v4/generate/fpm-custom-page/annotations.js.map +1 -1
  149. package/dist/specification/src/sync/v4/generate/fpm-custom-page/utils.d.ts.map +1 -1
  150. package/dist/specification/src/sync/v4/generate/fpm-custom-page/utils.js +10 -1
  151. package/dist/specification/src/sync/v4/generate/fpm-custom-page/utils.js.map +1 -1
  152. package/dist/specification/src/sync/v4/generate/index.d.ts +1 -1
  153. package/dist/specification/src/sync/v4/generate/index.d.ts.map +1 -1
  154. package/dist/specification/src/sync/v4/generate/index.js +1 -1
  155. package/dist/specification/src/sync/v4/generate/index.js.map +1 -1
  156. package/dist/specification/src/sync/v4/generate/list-report/ListReportUtils.d.ts +73 -0
  157. package/dist/specification/src/sync/v4/generate/list-report/ListReportUtils.d.ts.map +1 -0
  158. package/dist/specification/src/sync/v4/generate/list-report/ListReportUtils.js +354 -0
  159. package/dist/specification/src/sync/v4/generate/list-report/ListReportUtils.js.map +1 -0
  160. package/dist/specification/src/sync/v4/generate/{listReport.d.ts → list-report/listReport.d.ts} +27 -16
  161. package/dist/specification/src/sync/v4/generate/list-report/listReport.d.ts.map +1 -0
  162. package/dist/specification/src/sync/v4/generate/{listReport.js → list-report/listReport.js} +194 -164
  163. package/dist/specification/src/sync/v4/generate/list-report/listReport.js.map +1 -0
  164. package/dist/specification/src/sync/v4/generate/objectPage.d.ts.map +1 -1
  165. package/dist/specification/src/sync/v4/generate/objectPage.js +145 -44
  166. package/dist/specification/src/sync/v4/generate/objectPage.js.map +1 -1
  167. package/dist/specification/src/sync/v4/import/pages/listReport.d.ts.map +1 -1
  168. package/dist/specification/src/sync/v4/import/pages/listReport.js +2 -1
  169. package/dist/specification/src/sync/v4/import/pages/listReport.js.map +1 -1
  170. package/dist/specification/src/sync/v4/import/utils.js +5 -3
  171. package/dist/specification/src/sync/v4/import/utils.js.map +1 -1
  172. package/dist/specification/src/sync/v4/sync-rules/App.d.ts +9 -7
  173. package/dist/specification/src/sync/v4/sync-rules/App.d.ts.map +1 -1
  174. package/dist/specification/src/sync/v4/sync-rules/App.js +4 -8
  175. package/dist/specification/src/sync/v4/sync-rules/App.js.map +1 -1
  176. package/dist/specification/src/sync/v4/sync-rules/AppSchema.d.ts +2 -9
  177. package/dist/specification/src/sync/v4/sync-rules/AppSchema.d.ts.map +1 -1
  178. package/dist/specification/src/sync/v4/sync-rules/AppSchema.js +2 -11
  179. package/dist/specification/src/sync/v4/sync-rules/AppSchema.js.map +1 -1
  180. package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.d.ts +219 -96
  181. package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.d.ts.map +1 -1
  182. package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.js +557 -211
  183. package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.js.map +1 -1
  184. package/dist/specification/src/sync/v4/sync-rules/Page.d.ts +17 -22
  185. package/dist/specification/src/sync/v4/sync-rules/Page.d.ts.map +1 -1
  186. package/dist/specification/src/sync/v4/sync-rules/Page.js +15 -22
  187. package/dist/specification/src/sync/v4/sync-rules/Page.js.map +1 -1
  188. package/dist/specification/src/sync/v4/sync-rules/controllerExtensions.d.ts +1 -0
  189. package/dist/specification/src/sync/v4/sync-rules/controllerExtensions.d.ts.map +1 -1
  190. package/dist/specification/src/sync/v4/sync-rules/controllerExtensions.js +17 -9
  191. package/dist/specification/src/sync/v4/sync-rules/controllerExtensions.js.map +1 -1
  192. package/dist/specification/src/sync/v4/sync-rules/index.d.ts +5 -0
  193. package/dist/specification/src/sync/v4/sync-rules/index.d.ts.map +1 -0
  194. package/dist/specification/src/sync/v4/sync-rules/index.js +21 -0
  195. package/dist/specification/src/sync/v4/sync-rules/index.js.map +1 -0
  196. package/dist/specification/src/sync/v4/sync-rules/utils.d.ts.map +1 -1
  197. package/dist/specification/src/sync/v4/sync-rules/utils.js +4 -0
  198. package/dist/specification/src/sync/v4/sync-rules/utils.js.map +1 -1
  199. package/dist/specification/src/sync/v4/utils/index.d.ts +2 -0
  200. package/dist/specification/src/sync/v4/utils/index.d.ts.map +1 -0
  201. package/dist/specification/src/sync/v4/utils/index.js +18 -0
  202. package/dist/specification/src/sync/v4/utils/index.js.map +1 -0
  203. package/dist/specification/src/sync/v4/utils/utils.d.ts +9 -1
  204. package/dist/specification/src/sync/v4/utils/utils.d.ts.map +1 -1
  205. package/dist/specification/src/sync/v4/utils/utils.js +17 -2
  206. package/dist/specification/src/sync/v4/utils/utils.js.map +1 -1
  207. package/dist/specification/test/test-projects/v2sttaProdMan2/webapp/manifest.json +550 -0
  208. package/dist/specification/test/test-projects/v4new/webapp/manifest.json +147 -0
  209. package/dist/specification/test/test-utils/utils.d.ts +71 -0
  210. package/dist/specification/test/test-utils/utils.d.ts.map +1 -0
  211. package/dist/specification/test/test-utils/utils.js +400 -0
  212. package/dist/specification/test/test-utils/utils.js.map +1 -0
  213. package/dist/specification/test/unit/decorators/validity-test-utils.d.ts +131 -0
  214. package/dist/specification/test/unit/decorators/validity-test-utils.d.ts.map +1 -0
  215. package/dist/specification/test/unit/decorators/validity-test-utils.js +661 -0
  216. package/dist/specification/test/unit/decorators/validity-test-utils.js.map +1 -0
  217. package/dist/types/src/apiTypes.d.ts +2 -3
  218. package/dist/types/src/apiTypes.d.ts.map +1 -1
  219. package/dist/types/src/apiTypes.js.map +1 -1
  220. package/dist/types/src/common/types.d.ts +119 -13
  221. package/dist/types/src/common/types.d.ts.map +1 -1
  222. package/dist/types/src/common/types.js.map +1 -1
  223. package/dist/types/src/v2/controls/ObjectPageTable.d.ts +1 -1
  224. package/dist/types/src/v2/controls/Table.d.ts +1 -1
  225. package/dist/types/src/v4/controls/ObjectPageTable.d.ts +1 -1
  226. package/dist/types/src/v4/controls/ObjectPageTable.d.ts.map +1 -1
  227. package/dist/types/src/v4/controls/Table.d.ts +3 -3
  228. package/dist/types/src/v4/controls/Table.d.ts.map +1 -1
  229. package/package.json +14 -12
  230. package/dist/specification/src/sync/v4/generate/ListReportUtils.d.ts +0 -107
  231. package/dist/specification/src/sync/v4/generate/ListReportUtils.d.ts.map +0 -1
  232. package/dist/specification/src/sync/v4/generate/ListReportUtils.js +0 -394
  233. package/dist/specification/src/sync/v4/generate/ListReportUtils.js.map +0 -1
  234. package/dist/specification/src/sync/v4/generate/listReport.d.ts.map +0 -1
  235. package/dist/specification/src/sync/v4/generate/listReport.js.map +0 -1
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DEFAULT_TABLE_TYPE = void 0;
6
7
  exports.addSelectionFields = addSelectionFields;
7
8
  exports.getVisualFilters = getVisualFilters;
8
9
  exports.addVisualFilters = addVisualFilters;
@@ -12,21 +13,23 @@ exports.addALPViews = addALPViews;
12
13
  exports.applyLRSchemaAdjustments = applyLRSchemaAdjustments;
13
14
  exports.addTagsToView = addTagsToView;
14
15
  exports.addLRViewParts = addLRViewParts;
15
- exports.getDefaultAnnotationPath = getDefaultAnnotationPath;
16
16
  exports.addHeaderActions = addHeaderActions;
17
17
  exports.addManifestPathsToPropertiesLR = addManifestPathsToPropertiesLR;
18
18
  exports.generateListReportSchemaV4 = generateListReportSchemaV4;
19
- const utils_1 = require("../utils/utils");
20
- const utils_2 = require("../utils/utils");
19
+ const utils_1 = require("../../utils");
20
+ const utils_2 = require("../../utils");
21
21
  const ux_specification_types_1 = require("@sap/ux-specification-types");
22
22
  const i18next_1 = __importDefault(require("i18next"));
23
- const extensionLogger_1 = require("../../../extensionLogger");
24
- const common_1 = require("../../common");
25
- const actions_1 = require("./actions");
26
- const AppSchema_1 = require("../sync-rules/AppSchema");
27
- const App_1 = require("../sync-rules/App");
28
- const Page_1 = require("../sync-rules/Page");
23
+ const extensionLogger_1 = require("../../../../extensionLogger");
24
+ const common_1 = require("../../../common");
25
+ const actions_1 = require("../actions");
26
+ const sync_rules_1 = require("../../sync-rules");
29
27
  const ListReportUtils_1 = require("./ListReportUtils");
28
+ const controls_1 = require("../../export/controls");
29
+ /**
30
+ * Default table type when not specified in manifest.
31
+ */
32
+ exports.DEFAULT_TABLE_TYPE = ux_specification_types_1.v4.TableTypeV4.ResponsiveTable;
30
33
  const ROOT_PROPERTIES_ORDER = ['header', 'filterBar', 'chart', 'table'];
31
34
  const UILINEITEM = '@UI.LineItem';
32
35
  /**
@@ -40,6 +43,7 @@ const UILINEITEM = '@UI.LineItem';
40
43
  * @returns {Definition} - the updated selection fields definition
41
44
  */
42
45
  function addSelectionFields(entityType, appSchema, selectionFieldsAnnotation, selectionFieldsDefinition, qualifier) {
46
+ // No @validity check needed here
43
47
  if (!selectionFieldsDefinition) {
44
48
  selectionFieldsDefinition = appSchema.definitions[ux_specification_types_1.DefinitionName.SelectionFields];
45
49
  selectionFieldsDefinition.additionalProperties = false;
@@ -51,8 +55,9 @@ function addSelectionFields(entityType, appSchema, selectionFieldsAnnotation, se
51
55
  if (selectionFieldsAnnotation) {
52
56
  let i = 0;
53
57
  selectionFieldsAnnotation?.forEach((selectionField) => {
58
+ const value = selectionField.value ?? `UnknownField${i}`;
54
59
  let description = selectionField.value;
55
- const fieldDefinition = 'SelectionField::' + (0, common_1.prepareRef)(selectionField.value);
60
+ const fieldDefinition = 'SelectionField::' + (0, common_1.prepareRef)(value);
56
61
  if (selectionField.type === 'PropertyPath') {
57
62
  description = (0, common_1.getLabelForPropertyPath)(selectionField, entityType);
58
63
  }
@@ -68,10 +73,14 @@ function addSelectionFields(entityType, appSchema, selectionFieldsAnnotation, se
68
73
  additionalProperties: false,
69
74
  ...(dataType && { dataType })
70
75
  };
76
+ if (selectionField.value === undefined) {
77
+ // Add message about unresolvable value for selection field
78
+ (0, common_1.addMessageToSchema)(appSchema.definitions[fieldDefinition], {
79
+ text: i18next_1.default.t('UNRESOLVABLE_VALUE_OF_SELECTION_FIELD')
80
+ });
81
+ }
71
82
  appSchema.definitions[fieldDefinition][ux_specification_types_1.SchemaTag.isViewNode] = true;
72
- appSchema.definitions[fieldDefinition][ux_specification_types_1.SchemaTag.keys] = [
73
- { name: ux_specification_types_1.SchemaKeyName.value, value: `${selectionField.value}` }
74
- ];
83
+ appSchema.definitions[fieldDefinition][ux_specification_types_1.SchemaTag.keys] = [{ name: ux_specification_types_1.SchemaKeyName.value, value: `${value}` }];
75
84
  if (selectionField.$target?.fullyQualifiedName.indexOf('@') > -1) {
76
85
  appSchema.definitions[fieldDefinition][ux_specification_types_1.SchemaTag.target] = selectionField.$target.fullyQualifiedName
77
86
  .split('@')[0]
@@ -130,6 +139,7 @@ function getPropertiesIndex(selectionFields, entityType) {
130
139
  * @param selectionFields - The selection fields annotation to be processed
131
140
  */
132
141
  function addVisualFilters(entityType, appSchema, visualFiltersManifest, selectionFields) {
142
+ // No @validity check needed here
133
143
  const propertiesIndex = getPropertiesIndex(selectionFields, entityType);
134
144
  const visualFilters = appSchema.definitions[ux_specification_types_1.DefinitionName.VisualFilters];
135
145
  visualFilters.properties = {};
@@ -171,6 +181,8 @@ function applyCustomFilterFields(appSchema, selectionFieldsDefinition, v4Page) {
171
181
  };
172
182
  (0, utils_2.addCustomFilterFieldDefinition)(appSchema, selectionFieldsDefinition, v4Page);
173
183
  const customSectionDefinition = appSchema.definitions[ux_specification_types_1.DefinitionName.CustomFilterFieldPosition];
184
+ // Instantiate for @validity check
185
+ new controls_1.CustomFilterFieldPosition().init();
174
186
  if (typeof customSectionDefinition === 'object') {
175
187
  (0, common_1.addDescriptiveEnumDefinition)(appSchema, selectionFieldsDefinition, {
176
188
  schema: customSectionDefinition,
@@ -212,6 +224,8 @@ function defineActions(appSchema, schemaIdForActions, annotations, targetAnnotat
212
224
  action[ux_specification_types_1.SchemaTag.annotationPath] = `/${actionRecord.fullyQualifiedName}`;
213
225
  //as ChartToolBarAction is an empty object, copy ViewToolBarAction and remove properties
214
226
  appSchema.definitions[actionDefinition] = JSON.parse(JSON.stringify(appSchema.definitions[ux_specification_types_1.DefinitionName.ViewToolBarAction]));
227
+ // Instantiate for @validity check
228
+ new controls_1.ViewToolBarAction().init();
215
229
  appSchema.definitions[actionDefinition].properties = {};
216
230
  appSchema.definitions[actionDefinition][ux_specification_types_1.SchemaTag.annotationPath] = actionRecord.fullyQualifiedName;
217
231
  i++;
@@ -395,6 +409,8 @@ function addALPChartView(appSchema, chartAnnotationPath, targetAnnotation, annot
395
409
  chartView[ux_specification_types_1.SchemaTag.artifactType] = ux_specification_types_1.ArtifactType.Manifest;
396
410
  chartView[ux_specification_types_1.SchemaTag.key] = 'primary';
397
411
  chartView[ux_specification_types_1.SchemaTag.keys] = [{ name: ux_specification_types_1.SchemaKeyName.key, value: 'primary' }];
412
+ // Instantiate for @validity check
413
+ new controls_1.ALPChart().init();
398
414
  }
399
415
  /**
400
416
  * Adds the ALP views to the app-specific schema.
@@ -527,8 +543,9 @@ function addViewChartDefinitions(inputParameters, annotations) {
527
543
  * @param viewKey - view key
528
544
  * @param title - view title
529
545
  * @param page - Represents the page in the application's structure where the view line items are to be added.
546
+ * @param app - Represents the overall application structure, providing access to the manifest.
530
547
  */
531
- function addViewChart(inputParameters, UIAnnotations, appSchema, viewsDefinition, viewKey, title, page) {
548
+ function addViewChart(inputParameters, UIAnnotations, appSchema, viewsDefinition, viewKey, title, page, app) {
532
549
  const idForChart = addViewChartDefinitions(inputParameters, UIAnnotations);
533
550
  const chartViewDefinition = appSchema.definitions[idForChart];
534
551
  chartViewDefinition.properties.annotationPath[ux_specification_types_1.SchemaTag.hidden] = true;
@@ -542,14 +559,14 @@ function addViewChart(inputParameters, UIAnnotations, appSchema, viewsDefinition
542
559
  };
543
560
  // Add "manifestPath" for table properties
544
561
  addManifestPathsToPropertiesLR(inputParameters.appSchema, ux_specification_types_1.DefinitionName.LRChartView, chartViewDefinition, {
545
- pageName: page.getPage().id,
546
- manifest: page.getApp().manifest,
562
+ pageName: page.target.id,
563
+ manifest: app.manifest,
547
564
  targetAnnotation: inputParameters.targetAnnotation,
548
565
  viewConfig: {
549
566
  key: viewKey,
550
567
  entitySet: inputParameters.entitySet
551
568
  }
552
- });
569
+ }, true);
553
570
  }
554
571
  /**
555
572
  * Retrieves the line item reference for a specified view and entity type.
@@ -573,96 +590,6 @@ function getLineItemRef(v4Page, entityType, viewKey, lineItemTerm, lineItemQuali
573
590
  `@${lineItemTerm}${qualifier}`;
574
591
  return entitySet ? `/${entitySet}/${lineItemReference}` : lineItemReference;
575
592
  }
576
- /**
577
- * Adjusts the schema definition related to the creation fields in the list report (LR) table.
578
- * This function modifies the app schema to handle the creation mode and relevant settings for the table.
579
- *
580
- * @param {SchemaAdjustmentParameters} schemaAdjustmentParameters - An object containing parameters required for schema adjustments.
581
- * It includes the application schema, table definition ID, facet definition ID, and the V4 page information.
582
- */
583
- function adjustCreationFieldsDefinition(schemaAdjustmentParameters) {
584
- const { entityType, appSchema, tableDefinitionKey, facetDefinitionKey, v4Page, viewKey } = schemaAdjustmentParameters;
585
- // when the table view is created, the entity type may differ from the one used for the table
586
- // schemaAdjustmentParameters contains the entity type used for the view
587
- const lineItemRef = getLineItemRef(v4Page, entityType, viewKey, entityType?.annotations?.UI?.LineItem?.term);
588
- // set specific implementation for creation fields in the LR table
589
- const creationModeDefinitionKey = (0, common_1.getFacetDefinitionKey)(ux_specification_types_1.DefinitionName.TableCreationModeLR, facetDefinitionKey);
590
- const tableDefinition = appSchema.definitions[tableDefinitionKey];
591
- const creationModeProperty = tableDefinition.properties[ux_specification_types_1.PropertyName.creationMode];
592
- creationModeProperty.$ref = (0, common_1.getFacetDefinitionLink)(ux_specification_types_1.DefinitionName.TableCreationModeLR, facetDefinitionKey);
593
- const creationModeDefinition = appSchema.definitions[creationModeDefinitionKey] ??
594
- (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.TableCreationModeLR, facetDefinitionKey, appSchema);
595
- const context = {
596
- page: v4Page,
597
- schema: creationModeDefinition,
598
- parameters: {
599
- lineItemRef,
600
- tableDefinition
601
- }
602
- };
603
- // for the AnalyticalTable we don't set the creation mode property
604
- common_1.manifestDrivenSchemaProcessor.apply(ux_specification_types_1.RuleName.LRCreationModeForAnalyticalTable, context);
605
- // the TreeTable has some specific properties in the creation mode
606
- common_1.manifestDrivenSchemaProcessor.apply(ux_specification_types_1.RuleName.LRCreationModeForNonTreeTable, context);
607
- // only in CreationDialog mode is the creationFields property allowed
608
- common_1.manifestDrivenSchemaProcessor.apply(ux_specification_types_1.RuleName.LRCreationModeForNonCreationDialogMode, context);
609
- }
610
- /**
611
- * Adjusts the schema definition related to the analytical configuration in the list report (LR) table.
612
- * This function modifies the app schema to handle the analytical configuration and relevant settings for the table.
613
- *
614
- * @param {SchemaAdjustmentParameters} schemaAdjustmentParameters - An object containing parameters required for schema adjustments.
615
- * It includes the application schema, table definition ID, facet definition ID, and the V4 page information.
616
- */
617
- function adjustAnalyticalConfiguration(schemaAdjustmentParameters) {
618
- const { entityType, appSchema, tableDefinitionKey, facetDefinitionKey, v4Page, viewKey, dataForLineItem } = schemaAdjustmentParameters;
619
- // when the table view is created, the entity type may differ from the one used for the table
620
- // schemaAdjustmentParameters contains the entity type used for the view
621
- const lineItemRef = getLineItemRef(v4Page, entityType, viewKey, entityType?.annotations?.UI?.LineItem?.term, dataForLineItem.lineItemAnnotation?.qualifier);
622
- // set specific implementation for analytical configuration in the LR table
623
- const tableDefinition = appSchema.definitions[tableDefinitionKey];
624
- const analyticalConfigurationDefinitionName = viewKey
625
- ? ux_specification_types_1.DefinitionName.ViewAnalyticalConfiguration
626
- : ux_specification_types_1.DefinitionName.AnalyticalConfiguration;
627
- const analyticalConfigurationDefinition = appSchema.definitions[analyticalConfigurationDefinitionName] ??
628
- (0, common_1.parseSchemaDefinition)(analyticalConfigurationDefinitionName, facetDefinitionKey, appSchema);
629
- const context = {
630
- page: v4Page,
631
- schema: analyticalConfigurationDefinition,
632
- parameters: {
633
- lineItemRef,
634
- tableDefinition
635
- }
636
- };
637
- // for the AnalyticalTable we set the analytical configuration property
638
- common_1.manifestDrivenSchemaProcessor.apply(ux_specification_types_1.RuleName.LRAnalyticalConfigurationForNonAnalyticalTable, context);
639
- }
640
- /**
641
- * Adjusts the schema definition related to the popin layout in the list report (LR) table.
642
- * This function modifies the app schema to handle the popin layout and relevant settings for the table.
643
- *
644
- * @param {SchemaAdjustmentParameters} schemaAdjustmentParameters - An object containing parameters required for schema adjustments.
645
- * It includes the application schema, table definition ID, facet definition ID, and the V4 page information.
646
- */
647
- function adjustPopinLayout(schemaAdjustmentParameters) {
648
- const { entityType, appSchema, tableDefinitionKey, v4Page, viewKey, dataForLineItem } = schemaAdjustmentParameters;
649
- // when the table view is created, the entity type may differ from the one used for the table
650
- // schemaAdjustmentParameters contains the entity type used for the view
651
- const lineItemRef = getLineItemRef(v4Page, entityType, viewKey, entityType?.annotations?.UI?.LineItem?.term, dataForLineItem.lineItemAnnotation?.qualifier);
652
- // set specific implementation for popinLayout in the LR table
653
- const tableDefinition = appSchema.definitions[tableDefinitionKey];
654
- const popinLayoutDefinition = tableDefinition.properties['popinLayout'];
655
- const context = {
656
- page: v4Page,
657
- schema: popinLayoutDefinition,
658
- parameters: {
659
- lineItemRef,
660
- tableDefinition
661
- }
662
- };
663
- // for the ResponsiveTable (default table type) we allow to set the popin layout property
664
- common_1.manifestDrivenSchemaProcessor.apply(ux_specification_types_1.RuleName.LRPopinLayoutForNonResponsiveTable, context);
665
- }
666
593
  /**
667
594
  * Adjusts the schema for a table by making necessary changes such as populating creation fields,
668
595
  * adjusting creation field definitions, and adding enum mappings for mass edit functionalities.
@@ -674,16 +601,85 @@ function applyLRSchemaAdjustments(schemaAdjustmentParameters) {
674
601
  // in the future, all postgeneration adjustments for the LR Page should be done here
675
602
  // populate the creation fields for the table with the data from the columns
676
603
  (0, utils_1.initializeCreationModeSchema)(appSchema, facetDefinitionKey, entityType, ux_specification_types_1.DefinitionName.TableCreationModeLR);
677
- // remove unnecessary properties from the creation mode aggregation according to the table type
678
- adjustCreationFieldsDefinition(schemaAdjustmentParameters);
679
- // remove unnecessary properties from the analytical configuration aggregation according to the table type
680
- adjustAnalyticalConfiguration(schemaAdjustmentParameters);
681
- adjustPopinLayout(schemaAdjustmentParameters);
604
+ // Apply decorator-based visibility rules for table properties
605
+ applyTableDecorators(schemaAdjustmentParameters);
682
606
  // add columns to a enum, in this case enableMassEdit -> visibleFields and ignoredFields
683
607
  (0, utils_2.addEnumForEnableMassEdit)(appSchema, tableDefinitionKey, facetDefinitionKey, entityType);
684
608
  // add the custom action and custom action menu definition
685
609
  (0, actions_1.configureCustomActionDefinition)(schemaAdjustmentParameters);
686
610
  }
611
+ /**
612
+ * Retrieves the table settings from the manifest for a given line item reference.
613
+ * The returned object includes both TableSettings and Table-level properties
614
+ * like creationMode, analyticalConfiguration, and popinLayout.
615
+ *
616
+ * @param v4Page - The V4 page configuration from manifest
617
+ * @param lineItemRef - The line item reference (e.g., '@UI.LineItem')
618
+ * @returns The table settings or undefined if not found
619
+ */
620
+ function getTableSettingsFromManifest(v4Page, lineItemRef) {
621
+ return v4Page?.options?.settings?.controlConfiguration?.[lineItemRef ?? '']?.[ux_specification_types_1.PropertyName.tableSettings];
622
+ }
623
+ /**
624
+ * Applies decorator-based visibility rules to table and creation mode definitions.
625
+ * This function uses the @hide and @message decorators defined on the Table and TableCreationModeLR classes
626
+ * to conditionally hide properties and show warning messages based on table type and settings.
627
+ *
628
+ * @param schemaAdjustmentParameters - Parameters containing schema, page, and table definition information
629
+ */
630
+ function applyTableDecorators(schemaAdjustmentParameters) {
631
+ const { appSchema, tableDefinitionKey, facetDefinitionKey, v4Page, viewKey, entityType, dataForLineItem } = schemaAdjustmentParameters;
632
+ // Get the line item reference for looking up table settings in manifest
633
+ const lineItemRef = getLineItemRef(v4Page, entityType, viewKey, entityType?.annotations?.UI?.LineItem?.term, dataForLineItem?.lineItemAnnotation?.qualifier);
634
+ // Get table settings from manifest and build custom context for decorator evaluation
635
+ const tableSettings = getTableSettingsFromManifest(v4Page, lineItemRef);
636
+ const customContext = {
637
+ ...tableSettings,
638
+ type: tableSettings?.type ?? exports.DEFAULT_TABLE_TYPE
639
+ };
640
+ // Get the table definition to apply decorators to
641
+ const tableDefinition = appSchema.definitions[tableDefinitionKey];
642
+ // Get the creation mode definition
643
+ const creationModeDefinitionKey = (0, common_1.getFacetDefinitionKey)(ux_specification_types_1.DefinitionName.TableCreationModeLR, facetDefinitionKey);
644
+ const creationModeDefinition = appSchema.definitions[creationModeDefinitionKey] ??
645
+ (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.TableCreationModeLR, facetDefinitionKey, appSchema);
646
+ // Set up the $ref for creationMode property
647
+ if (tableDefinition?.properties?.[ux_specification_types_1.PropertyName.creationMode]) {
648
+ const creationModeProperty = tableDefinition.properties[ux_specification_types_1.PropertyName.creationMode];
649
+ creationModeProperty.$ref = (0, common_1.getFacetDefinitionLink)(ux_specification_types_1.DefinitionName.TableCreationModeLR, facetDefinitionKey);
650
+ }
651
+ // Apply decorators to the Table definition (creationMode, analyticalConfiguration, popinLayout)
652
+ // Create a Table instance and apply its decorators to the specific table definition
653
+ new controls_1.Table().init(customContext, tableDefinition);
654
+ // Apply decorators to the TableCreationModeLR definition (creationFields, createInPlace, isCreateEnabled)
655
+ new controls_1.TableCreationModeLR().init(customContext, creationModeDefinition);
656
+ // Apply analyticalConfiguration decorators only when the property is specified in manifest
657
+ const hasAnalyticalConfiguration = tableSettings?.analyticalConfiguration !== undefined;
658
+ if (!hasAnalyticalConfiguration) {
659
+ return;
660
+ }
661
+ if (viewKey) {
662
+ // Multi-view: create a view-specific definition to isolate decorator messages per view
663
+ (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewAnalyticalConfiguration, viewKey, appSchema);
664
+ const definitionKey = (0, common_1.getFacetDefinitionKey)(ux_specification_types_1.DefinitionName.ViewAnalyticalConfiguration, viewKey);
665
+ const definition = appSchema.definitions[definitionKey];
666
+ if (definition) {
667
+ new controls_1.ViewAnalyticalConfiguration().init(customContext, definition);
668
+ // Update the table's $ref to point to the view-specific definition
669
+ const analyticalConfigProp = tableDefinition?.properties?.[ux_specification_types_1.PropertyName.analyticalConfiguration];
670
+ if (analyticalConfigProp) {
671
+ analyticalConfigProp.$ref = (0, common_1.getFacetDefinitionLink)(ux_specification_types_1.DefinitionName.ViewAnalyticalConfiguration, viewKey);
672
+ }
673
+ }
674
+ }
675
+ else {
676
+ // Single table: use the shared definition
677
+ const definition = appSchema.definitions[ux_specification_types_1.DefinitionName.AnalyticalConfiguration];
678
+ if (definition) {
679
+ new controls_1.AnalyticalConfiguration().init(customContext, definition);
680
+ }
681
+ }
682
+ }
687
683
  /**
688
684
  * Modifies the app schema, adds the right line item settings as derived from the visualization.
689
685
  *
@@ -695,11 +691,13 @@ function applyLRSchemaAdjustments(schemaAdjustmentParameters) {
695
691
  * @param generateParameters.serviceAVT - OData service AVT information
696
692
  * @param generateParameters.entityType - entity type of the current page
697
693
  * @param {Page} page - Represents the page in the application's structure where the view line items are to be added.
694
+ * @param app - the application object containing manifest and other app-specific information.
698
695
  * @param {ExtensionLogger} logger - Logger for recording informational or error messages during the schema adjustment process.
699
696
  */
700
- function addViewLineItems(inputParameters, viewsDefinition, visualization, templateAnnotation, { serviceAVT, entityType }, page, logger) {
697
+ function addViewLineItems(inputParameters, viewsDefinition, visualization, templateAnnotation, { serviceAVT, entityType }, page, app, logger) {
701
698
  const tableId = `${ux_specification_types_1.DefinitionName.LRTableView}<${inputParameters.viewKey}>`;
702
- const viewId = `${ux_specification_types_1.DefinitionName.LineItemsOfView}::${inputParameters.viewKey}`;
699
+ const schemaIdForColumns = `${ux_specification_types_1.DefinitionName.LineItemsOfView}::${inputParameters.viewKey}`;
700
+ const schemaIdForActions = `${ux_specification_types_1.DefinitionName.Actions}<${schemaIdForColumns}>`;
703
701
  const lrTableView = (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.LRTableView, inputParameters.viewKey, inputParameters.appSchema);
704
702
  delete lrTableView[ux_specification_types_1.SchemaTag.isViewNode];
705
703
  lrTableView[ux_specification_types_1.SchemaTag.annotationPath] = inputParameters.targetAnnotation;
@@ -710,14 +708,14 @@ function addViewLineItems(inputParameters, viewsDefinition, visualization, templ
710
708
  lrTableView['entitySet'] = inputParameters.entitySet;
711
709
  }
712
710
  //Copy toolbar
713
- (0, common_1.addDefinitionRef)(lrTableView.properties.toolBar, ux_specification_types_1.DefinitionName.ToolBar, viewId);
711
+ (0, common_1.addDefinitionRef)(lrTableView.properties.toolBar, ux_specification_types_1.DefinitionName.ToolBar, schemaIdForColumns);
714
712
  const title = `Table View (key: ${inputParameters.viewKey})`;
715
713
  viewsDefinition.properties[inputParameters.viewKey] = {
716
714
  $ref: `${common_1.DEFINITION_LINK_PREFIX}${tableId}`,
717
715
  description: inputParameters.title || title,
718
716
  title
719
717
  };
720
- (0, common_1.addDefinitionRef)(lrTableView.properties.columns, viewId);
718
+ (0, common_1.addDefinitionRef)(lrTableView.properties.columns, schemaIdForColumns);
721
719
  lrTableView.properties.annotationPath[ux_specification_types_1.SchemaTag.hidden] = true;
722
720
  lrTableView.properties.index[ux_specification_types_1.SchemaTag.hidden] = true;
723
721
  lrTableView.properties.entitySet[ux_specification_types_1.SchemaTag.hidden] = true;
@@ -728,30 +726,29 @@ function addViewLineItems(inputParameters, viewsDefinition, visualization, templ
728
726
  lineItemAnnotation: inputParameters.targetEntityType?.annotations.UI[annotationTerm],
729
727
  entityType: inputParameters.targetEntityType,
730
728
  oDataServiceAVT: serviceAVT,
731
- lineItemId: viewId
729
+ lineItemId: schemaIdForColumns
732
730
  };
733
731
  (0, utils_2.addLineItemsTypeToSchema)(dataForLineItem, ux_specification_types_1.DefinitionName.ViewTableColumn, ux_specification_types_1.DefinitionName.ViewCustomColumn, ux_specification_types_1.DefinitionName.ViewCustomAction);
734
732
  // Table toolbar actions with custom actions
735
733
  const sectionIdPrefix = inputParameters.entitySet ? `/${inputParameters.entitySet}/` : '';
736
734
  const sectionIdInManifest = `${sectionIdPrefix}@${"com.sap.vocabularies.UI.v1.LineItem" /* UIAnnotationTerms.LineItem */}${visualization.split(ux_specification_types_1.Visualization.LineItem)[1]}`;
737
- const schemaIdForToolbarActions = `${ux_specification_types_1.DefinitionName.Actions}<${viewId}>`;
738
- const customActionDefinitionKey = `${ux_specification_types_1.DefinitionName.ViewCustomAction}<${viewId}>`;
735
+ const customActionDefinitionKey = `${ux_specification_types_1.DefinitionName.ViewCustomAction}<${schemaIdForColumns}>`;
739
736
  // Anchor selection
740
- (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewCustomActionPosition, viewId, inputParameters.appSchema);
741
- const customActionPositionDefinitionKey = `${ux_specification_types_1.DefinitionName.ViewCustomActionPosition}<${viewId}>`;
737
+ (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewCustomActionPosition, schemaIdForColumns, inputParameters.appSchema);
738
+ const customActionPositionDefinitionKey = `${ux_specification_types_1.DefinitionName.ViewCustomActionPosition}<${schemaIdForColumns}>`;
742
739
  const customActionDefinition = inputParameters.appSchema.definitions[customActionDefinitionKey];
743
740
  customActionDefinition.properties.position.$ref =
744
741
  `${common_1.DEFINITION_LINK_PREFIX}${customActionPositionDefinitionKey}`;
745
742
  const schemaAdjustmentParameters = {
746
743
  logger: logger,
747
744
  appSchema: inputParameters.appSchema,
748
- v4Page: page.getPage(),
745
+ v4Page: page.target,
749
746
  tableDefinitionKey: tableId,
750
- facetDefinitionKey: viewId,
747
+ facetDefinitionKey: schemaIdForColumns,
751
748
  viewKey: inputParameters.viewKey,
752
749
  entityType: inputParameters.targetEntityType || entityType,
753
750
  dataForLineItem,
754
- sectionActionsDefinitionKey: schemaIdForToolbarActions,
751
+ sectionActionsDefinitionKey: schemaIdForActions,
755
752
  scopedCustomActionDefinitionKey: customActionDefinitionKey,
756
753
  customActionDefinitionName: ux_specification_types_1.DefinitionName.ViewCustomAction,
757
754
  sectionIdInManifest,
@@ -760,14 +757,16 @@ function addViewLineItems(inputParameters, viewsDefinition, visualization, templ
760
757
  applyLRSchemaAdjustments(schemaAdjustmentParameters);
761
758
  // Add "manifestPath" for table properties
762
759
  addManifestPathsToPropertiesLR(inputParameters.appSchema, ux_specification_types_1.DefinitionName.LRTableView, lrTableView, {
763
- pageName: page.getPage().id,
764
- manifest: page.getApp().manifest,
760
+ pageName: page.target.id,
761
+ manifest: app.manifest,
765
762
  targetAnnotation: inputParameters.targetAnnotation,
766
763
  viewConfig: {
767
764
  key: inputParameters.viewKey,
768
765
  entitySet: inputParameters.entitySet
769
766
  }
770
- });
767
+ }, true);
768
+ // Add "manifestPath" for view actions
769
+ (0, ListReportUtils_1.addManifestPathsToDefinitionPropertiesLR)(inputParameters.appSchema, page.target.id, schemaIdForActions, app.getManifest(), inputParameters.targetAnnotation, inputParameters.entitySet);
771
770
  }
772
771
  /**
773
772
  * Adds the schema tags to a given view.
@@ -792,17 +791,20 @@ function addTagsToView(viewsDefinition, viewKey, namespace, view) {
792
791
  * @param commonInputParameters - list of input parameters as collected by the calling instance
793
792
  * @param visualization - visualization of the annotation
794
793
  * @param v4Page - the given page in manifest
794
+ * @param manifest - The application manifest
795
795
  * @param logger - extension logger
796
796
  */
797
- function addViewCustomExtensions(commonInputParameters, visualization, v4Page, logger) {
798
- const sectionId = `${ux_specification_types_1.DefinitionName.LineItemsOfView}::${commonInputParameters.viewKey}`;
797
+ function addViewCustomExtensions(commonInputParameters, visualization, v4Page, manifest, logger) {
798
+ const schemaIdForColumns = `${ux_specification_types_1.DefinitionName.LineItemsOfView}::${commonInputParameters.viewKey}`;
799
799
  const sectionIdPrefix = commonInputParameters.entitySet ? `/${commonInputParameters.entitySet}/` : '';
800
800
  const sectionIdInManifest = `${sectionIdPrefix}@${"com.sap.vocabularies.UI.v1.LineItem" /* UIAnnotationTerms.LineItem */}${visualization.split(ux_specification_types_1.Visualization.LineItem)[1]}`;
801
- const viewColumnDefinition = (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewCustomColumn, sectionId, commonInputParameters.appSchema);
802
- (0, common_1.addDefinitionRef)(viewColumnDefinition.properties.position, ux_specification_types_1.DefinitionName.ViewPosition, sectionId);
803
- (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewPosition, sectionId, commonInputParameters.appSchema);
804
- (0, utils_2.addCustomColumnDefinition)(commonInputParameters.appSchema, v4Page, logger, `${ux_specification_types_1.DefinitionName.ViewCustomColumn}<${sectionId}>`, sectionId, sectionIdInManifest);
805
- (0, utils_2.addFragmentEnumForAnchor)(commonInputParameters.appSchema, sectionId, v4Page, `${ux_specification_types_1.DefinitionName.ViewPosition}<${sectionId}>`, sectionIdInManifest);
801
+ const viewColumnDefinition = (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewCustomColumn, schemaIdForColumns, commonInputParameters.appSchema);
802
+ (0, common_1.addDefinitionRef)(viewColumnDefinition.properties.position, ux_specification_types_1.DefinitionName.ViewPosition, schemaIdForColumns);
803
+ (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewPosition, schemaIdForColumns, commonInputParameters.appSchema);
804
+ (0, utils_2.addCustomColumnDefinition)(commonInputParameters.appSchema, v4Page, logger, `${ux_specification_types_1.DefinitionName.ViewCustomColumn}<${schemaIdForColumns}>`, schemaIdForColumns, sectionIdInManifest);
805
+ (0, utils_2.addFragmentEnumForAnchor)(commonInputParameters.appSchema, schemaIdForColumns, v4Page, `${ux_specification_types_1.DefinitionName.ViewPosition}<${schemaIdForColumns}>`, sectionIdInManifest);
806
+ // Add "manifestPath" for view columns
807
+ (0, ListReportUtils_1.addManifestPathsToDefinitionPropertiesLR)(commonInputParameters.appSchema, v4Page.id, schemaIdForColumns, manifest, commonInputParameters.targetAnnotation, commonInputParameters.entitySet);
806
808
  // Remove generic position
807
809
  if (commonInputParameters.appSchema.definitions.Position) {
808
810
  delete commonInputParameters.appSchema.definitions.Position;
@@ -819,18 +821,19 @@ function addViewCustomExtensions(commonInputParameters, visualization, v4Page, l
819
821
  * @param generateParameters.entityType - entity type of the current page
820
822
  * @param generateParameters.logger - extension logger
821
823
  * @param page - the current page object
824
+ * @param app - the application object containing manifest and other app-specific information.
822
825
  * @param uiAnnotations - UI annotations of the given entityType
823
826
  * @param view - the given view
824
827
  */
825
- function addLRViewParts(visualization, viewsDefinition, commonInputParameters, { serviceAVT, entityType, logger }, page, uiAnnotations, view) {
828
+ function addLRViewParts(visualization, viewsDefinition, commonInputParameters, { serviceAVT, entityType, logger }, page, app, uiAnnotations, view) {
826
829
  if (visualization?.indexOf(ux_specification_types_1.Visualization.LineItem) > -1) {
827
830
  //Add Line item view
828
- addViewLineItems(commonInputParameters, viewsDefinition, visualization, commonInputParameters.targetAnnotation, { serviceAVT, entityType }, page, logger);
829
- addViewCustomExtensions(commonInputParameters, visualization, page.getPage(), logger);
831
+ addViewLineItems(commonInputParameters, viewsDefinition, visualization, commonInputParameters.targetAnnotation, { serviceAVT, entityType }, page, app, logger);
832
+ addViewCustomExtensions(commonInputParameters, visualization, page.target, app.getManifest(), logger);
830
833
  }
831
834
  else if (visualization?.indexOf('Chart') > -1) {
832
835
  //Add Chart view
833
- addViewChart(commonInputParameters, uiAnnotations, commonInputParameters.appSchema, viewsDefinition, commonInputParameters.viewKey, commonInputParameters.title, page);
836
+ addViewChart(commonInputParameters, uiAnnotations, commonInputParameters.appSchema, viewsDefinition, commonInputParameters.viewKey, commonInputParameters.title, page, app);
834
837
  }
835
838
  else if (view['template']) {
836
839
  const titleOnHover = view['label'] || `Custom View (key: ${commonInputParameters.viewKey})`;
@@ -854,17 +857,16 @@ function addLRViewParts(visualization, viewsDefinition, commonInputParameters, {
854
857
  /**
855
858
  * Checks for the default annotation path to use for LR table.
856
859
  *
857
- * @param v4Page - actual page in the manifest
858
- * @param entityType - actual entity type (AVT information)
859
- * @param templateType - The type of template being used (e.g., ListReportObjectPageV4 or AnalyticalListPageV4)
860
+ * @param page - the current page object
860
861
  * @returns annotation term
861
862
  */
862
- function getDefaultAnnotationPath(v4Page, entityType, templateType) {
863
- if (v4Page.options.settings?.views?.paths && templateType === ux_specification_types_1.TemplateType.ListReportObjectPageV4) {
863
+ function getDefaultAnnotationPath(page) {
864
+ const { entity: { type: entityType }, template: { type: templateType }, target } = page;
865
+ if (target?.options?.settings?.views?.paths && templateType === ux_specification_types_1.TemplateType.ListReportObjectPageV4) {
864
866
  return;
865
867
  }
866
- if (v4Page.options.settings?.defaultTemplateAnnotationPath) {
867
- return v4Page.options.settings.defaultTemplateAnnotationPath;
868
+ if (target?.options?.settings?.defaultTemplateAnnotationPath) {
869
+ return target?.options?.settings.defaultTemplateAnnotationPath;
868
870
  }
869
871
  if (templateType === ux_specification_types_1.TemplateType.ListReportObjectPageV4) {
870
872
  return (entityType?.annotations.UI?.SelectionPresentationVariant?.term ||
@@ -904,8 +906,9 @@ function addHeaderActions(appSchema, v4Page, logger) {
904
906
  * @param definitionName - The name of the definition/class whose properties are being processed.
905
907
  * @param definition - The definition object containing property schemas.
906
908
  * @param pathParams - Additional context required to compute manifest paths.
909
+ * @param handleRelative - A flag indicating whether to use relative paths for definition properties.
907
910
  */
908
- function addManifestPathsToPropertiesLR(appSchema, definitionName, definition, pathParams) {
911
+ function addManifestPathsToPropertiesLR(appSchema, definitionName, definition, pathParams, handleRelative = false) {
909
912
  let targetAnnotation = undefined;
910
913
  if (pathParams.targetAnnotation) {
911
914
  const annotationParts = pathParams.targetAnnotation?.split('/');
@@ -921,8 +924,13 @@ function addManifestPathsToPropertiesLR(appSchema, definitionName, definition, p
921
924
  }
922
925
  (0, utils_1.addManifestPathsToProperties)(appSchema, definitionName, definition, {
923
926
  ...pathParams,
924
- pathsParts: [targetAnnotation, '', targetAnnotation, pathParams.viewConfig]
925
- });
927
+ pathsParts: [
928
+ pathParams.sectionId ? undefined : targetAnnotation,
929
+ pathParams.columnKey ? pathParams.columnKey : '',
930
+ targetAnnotation,
931
+ pathParams.viewConfig
932
+ ]
933
+ }, handleRelative);
926
934
  }
927
935
  /**
928
936
  * Adds 'manifestPath' to static nodes in schema.
@@ -931,6 +939,8 @@ function addManifestPathsToPropertiesLR(appSchema, definitionName, definition, p
931
939
  * @param pathParams - Additional context required to compute manifest paths.
932
940
  */
933
941
  function addManifestPathsToStaticNodes(appSchema, pathParams) {
942
+ // Add "manifestPath" for current page
943
+ appSchema['manifestPath'] = (0, utils_1.getPageManifestPath)(pathParams);
934
944
  // Root level - rules stored on page class level
935
945
  addManifestPathsToPropertiesLR(appSchema, ux_specification_types_1.PageTypeV4.ListReport, appSchema, pathParams);
936
946
  // Other definitions
@@ -955,17 +965,24 @@ class ListReportPage {
955
965
  * @param contextPath - context path of the page
956
966
  */
957
967
  constructor(generateParameters, schema, templateName, contextPath) {
958
- this.schema = new AppSchema_1.AppSchema(schema);
959
- this.app = (0, App_1.createApp)(generateParameters.manifest, generateParameters.serviceAVT, generateParameters.logger);
960
- this.page = new Page_1.Page(this.app, { name: templateName, type: generateParameters.templateType }, generateParameters.entitySet, contextPath);
968
+ const template = { name: templateName, type: generateParameters.templateType };
969
+ this.appSchema = new sync_rules_1.AppSchema(schema);
970
+ this.app = (0, sync_rules_1.createApp)(generateParameters.manifest, generateParameters.serviceAVT, generateParameters.logger);
971
+ this.page = new sync_rules_1.Page(this.app, template, generateParameters.entitySet, generateParameters.entityType, contextPath);
972
+ this.logger = this.app.logger;
973
+ this.page.addConfig({
974
+ isALP: template.type === ux_specification_types_1.TemplateType.AnalyticalListPageV4,
975
+ views: this.page.target?.options?.settings.views,
976
+ defaultAnnotation: getDefaultAnnotationPath(this.page)
977
+ });
961
978
  }
962
979
  /**
963
980
  * Cleans up the schema by hiding specific properties and removing unnecessary definitions.
964
981
  */
965
982
  cleanup() {
966
- this.schema.hide(this.schema.getRootProperty([ux_specification_types_1.PropertyName.defaultTemplateAnnotationPath]));
967
- this.schema.cleanup(['GenericColumns', 'Action']);
968
- (0, common_1.updatePropertyIndices)(this.schema.getSchema(), ROOT_PROPERTIES_ORDER);
983
+ this.appSchema.hide(this.appSchema.getRootProperty([ux_specification_types_1.PropertyName.defaultTemplateAnnotationPath]));
984
+ this.appSchema.cleanup(['GenericColumns', 'Action']);
985
+ (0, common_1.updatePropertyIndices)(this.appSchema.get(), ROOT_PROPERTIES_ORDER);
969
986
  }
970
987
  /**
971
988
  * Generates the finalized schema for the List Report page.
@@ -973,20 +990,33 @@ class ListReportPage {
973
990
  * @returns The finalized schema for List Report page
974
991
  */
975
992
  generate() {
976
- new ListReportUtils_1.GeneralListReportSettings(this.schema, this.page, this.app.getLogger()).instantiate();
977
- if (!this.page.getPage()) {
978
- return this.schema.finalize();
993
+ const params = {
994
+ appSchema: this.appSchema,
995
+ app: this.app,
996
+ page: this.page,
997
+ logger: this.logger
998
+ };
999
+ new ListReportUtils_1.GeneralListReportSettings(params).init();
1000
+ if (!this.page.target) {
1001
+ return this.appSchema.get();
979
1002
  }
980
- new ListReportUtils_1.Header(this.schema, this.page, this.app.getLogger()).instantiate();
981
- new ListReportUtils_1.FilterBar(this.schema, this.page, this.app.getLogger()).instantiate();
982
- new ListReportUtils_1.TableAndViews(this.schema, this.page, this.app.getLogger()).instantiate();
1003
+ new controls_1.Header(params).init();
1004
+ new controls_1.HeaderActions(params).init();
1005
+ new controls_1.CustomHeaderAction(params).init();
1006
+ new ListReportUtils_1.FilterBar(params).init();
1007
+ new ListReportUtils_1.TableAndViews(params).init();
983
1008
  // Add "manifestPath" for properties in static nodes
984
- addManifestPathsToStaticNodes(this.schema.getSchema(), {
985
- pageName: this.page.getPage().id,
1009
+ addManifestPathsToStaticNodes(this.appSchema.get(), {
1010
+ pageName: this.page.target.id,
986
1011
  manifest: this.app.getManifest()
987
1012
  });
1013
+ // Add "manifestPath" for custom header actions
1014
+ const definitionNames = [ux_specification_types_1.DefinitionName.HeaderActions];
1015
+ definitionNames.forEach((definitionName) => {
1016
+ (0, ListReportUtils_1.addManifestPathsToDefinitionPropertiesLR)(this.appSchema.get(), this.page.target.id, definitionName, this.app.getManifest());
1017
+ });
988
1018
  this.cleanup();
989
- return this.schema.finalize();
1019
+ return this.appSchema.get();
990
1020
  }
991
1021
  }
992
1022
  /**
@@ -1003,7 +1033,7 @@ function generateListReportSchemaV4(generateParameters, genericSchema, templateN
1003
1033
  const listReport = new ListReportPage(generateParameters, genericSchema, templateName, contextPath);
1004
1034
  if (!listReport.app.getManifest()) {
1005
1035
  listReport.cleanup();
1006
- return listReport.schema.finalize();
1036
+ return listReport.appSchema.get();
1007
1037
  }
1008
1038
  return listReport.generate();
1009
1039
  }