@sap/ux-specification 1.144.0 → 1.144.2

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 (296) hide show
  1. package/CHANGELOG.md +73 -0
  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 +340 -330
  14. package/dist/index-min.js.map +4 -4
  15. package/dist/schemas/v2/ListReportNewConfig.json +208 -7
  16. package/dist/schemas/v4/ApplicationV4.json +14 -0
  17. package/dist/schemas/v4/BuildingBlocksConfig.json +384 -43
  18. package/dist/schemas/v4/ObjectPageConfig.json +112 -728
  19. package/dist/specification/package.json +11 -10
  20. package/dist/specification/scripts/generate-validity-report.js +1 -1
  21. package/dist/specification/scripts/generate-validity-report.js.map +1 -1
  22. package/dist/specification/scripts/macros/corrections.d.ts.map +1 -1
  23. package/dist/specification/scripts/macros/corrections.js +48 -1
  24. package/dist/specification/scripts/macros/corrections.js.map +1 -1
  25. package/dist/specification/scripts/macros/schema.d.ts.map +1 -1
  26. package/dist/specification/scripts/macros/schema.js +23 -10
  27. package/dist/specification/scripts/macros/schema.js.map +1 -1
  28. package/dist/specification/scripts/schema/to-json-schema.js +1 -1
  29. package/dist/specification/scripts/schema/to-json-schema.js.map +1 -1
  30. package/dist/specification/src/api.d.ts.map +1 -1
  31. package/dist/specification/src/api.js +39 -3
  32. package/dist/specification/src/api.js.map +1 -1
  33. package/dist/specification/src/ftfs/ftfs.d.ts +8 -0
  34. package/dist/specification/src/ftfs/ftfs.d.ts.map +1 -1
  35. package/dist/specification/src/ftfs/ftfs.js +1 -0
  36. package/dist/specification/src/ftfs/ftfs.js.map +1 -1
  37. package/dist/specification/src/ftfs/index.d.ts +1 -1
  38. package/dist/specification/src/ftfs/index.d.ts.map +1 -1
  39. package/dist/specification/src/ftfs/index.js +2 -1
  40. package/dist/specification/src/ftfs/index.js.map +1 -1
  41. package/dist/specification/src/ftfs/parser/model/TreeModel.d.ts.map +1 -1
  42. package/dist/specification/src/ftfs/parser/model/TreeModel.js +3 -1
  43. package/dist/specification/src/ftfs/parser/model/TreeModel.js.map +1 -1
  44. package/dist/specification/src/i18n/i18n.d.ts.map +1 -1
  45. package/dist/specification/src/i18n/i18n.js +2 -1
  46. package/dist/specification/src/i18n/i18n.js.map +1 -1
  47. package/dist/specification/src/sync/common/ManifestDrivenSchemaProcessor.d.ts +8 -1
  48. package/dist/specification/src/sync/common/ManifestDrivenSchemaProcessor.d.ts.map +1 -1
  49. package/dist/specification/src/sync/common/ManifestDrivenSchemaProcessor.js +10 -7
  50. package/dist/specification/src/sync/common/ManifestDrivenSchemaProcessor.js.map +1 -1
  51. package/dist/specification/src/sync/common/decoration/Decorator.d.ts +91 -0
  52. package/dist/specification/src/sync/common/decoration/Decorator.d.ts.map +1 -0
  53. package/dist/specification/src/sync/common/decoration/Decorator.js +139 -0
  54. package/dist/specification/src/sync/common/decoration/Decorator.js.map +1 -0
  55. package/dist/specification/src/sync/common/decoration/condition-evaluator.d.ts +95 -0
  56. package/dist/specification/src/sync/common/decoration/condition-evaluator.d.ts.map +1 -0
  57. package/dist/specification/src/sync/common/decoration/condition-evaluator.js +210 -0
  58. package/dist/specification/src/sync/common/decoration/condition-evaluator.js.map +1 -0
  59. package/dist/specification/src/sync/common/decoration/decorator-paths.d.ts +58 -22
  60. package/dist/specification/src/sync/common/decoration/decorator-paths.d.ts.map +1 -1
  61. package/dist/specification/src/sync/common/decoration/decorator-paths.js +23 -1
  62. package/dist/specification/src/sync/common/decoration/decorator-paths.js.map +1 -1
  63. package/dist/specification/src/sync/common/decoration/decorators.d.ts +6 -48
  64. package/dist/specification/src/sync/common/decoration/decorators.d.ts.map +1 -1
  65. package/dist/specification/src/sync/common/decoration/decorators.js +26 -106
  66. package/dist/specification/src/sync/common/decoration/decorators.js.map +1 -1
  67. package/dist/specification/src/sync/common/decoration/index.d.ts +4 -0
  68. package/dist/specification/src/sync/common/decoration/index.d.ts.map +1 -1
  69. package/dist/specification/src/sync/common/decoration/index.js +4 -0
  70. package/dist/specification/src/sync/common/decoration/index.js.map +1 -1
  71. package/dist/specification/src/sync/common/decoration/interfaces.d.ts +38 -0
  72. package/dist/specification/src/sync/common/decoration/interfaces.d.ts.map +1 -0
  73. package/dist/specification/src/sync/common/decoration/interfaces.js +3 -0
  74. package/dist/specification/src/sync/common/decoration/interfaces.js.map +1 -0
  75. package/dist/specification/src/sync/common/decoration/steps/Enums.d.ts +18 -0
  76. package/dist/specification/src/sync/common/decoration/steps/Enums.d.ts.map +1 -0
  77. package/dist/specification/src/sync/common/decoration/steps/Enums.js +50 -0
  78. package/dist/specification/src/sync/common/decoration/steps/Enums.js.map +1 -0
  79. package/dist/specification/src/sync/common/decoration/steps/Hide.d.ts +18 -0
  80. package/dist/specification/src/sync/common/decoration/steps/Hide.d.ts.map +1 -0
  81. package/dist/specification/src/sync/common/decoration/steps/Hide.js +46 -0
  82. package/dist/specification/src/sync/common/decoration/steps/Hide.js.map +1 -0
  83. package/dist/specification/src/sync/common/decoration/steps/Message.d.ts +26 -0
  84. package/dist/specification/src/sync/common/decoration/steps/Message.d.ts.map +1 -0
  85. package/dist/specification/src/sync/common/decoration/steps/Message.js +77 -0
  86. package/dist/specification/src/sync/common/decoration/steps/Message.js.map +1 -0
  87. package/dist/specification/src/sync/common/decoration/steps/Readonly.d.ts +18 -0
  88. package/dist/specification/src/sync/common/decoration/steps/Readonly.d.ts.map +1 -0
  89. package/dist/specification/src/sync/common/decoration/steps/Readonly.js +43 -0
  90. package/dist/specification/src/sync/common/decoration/steps/Readonly.js.map +1 -0
  91. package/dist/specification/src/sync/common/decoration/steps/Validity.d.ts +18 -0
  92. package/dist/specification/src/sync/common/decoration/steps/Validity.d.ts.map +1 -0
  93. package/dist/specification/src/sync/common/decoration/steps/Validity.js +68 -0
  94. package/dist/specification/src/sync/common/decoration/steps/Validity.js.map +1 -0
  95. package/dist/specification/src/sync/common/decoration/steps/enum-utils.d.ts +19 -0
  96. package/dist/specification/src/sync/common/decoration/steps/enum-utils.d.ts.map +1 -0
  97. package/dist/specification/src/sync/common/decoration/steps/enum-utils.js +48 -0
  98. package/dist/specification/src/sync/common/decoration/steps/enum-utils.js.map +1 -0
  99. package/dist/specification/src/sync/common/decoration/steps/index.d.ts +6 -0
  100. package/dist/specification/src/sync/common/decoration/steps/index.d.ts.map +1 -0
  101. package/dist/specification/src/sync/common/decoration/steps/index.js +14 -0
  102. package/dist/specification/src/sync/common/decoration/steps/index.js.map +1 -0
  103. package/dist/specification/src/sync/common/i18n.json +25 -1
  104. package/dist/specification/src/sync/common/importProject.d.ts.map +1 -1
  105. package/dist/specification/src/sync/common/importProject.js +2 -0
  106. package/dist/specification/src/sync/common/importProject.js.map +1 -1
  107. package/dist/specification/src/sync/common/rules.d.ts +25 -0
  108. package/dist/specification/src/sync/common/rules.d.ts.map +1 -1
  109. package/dist/specification/src/sync/common/rules.js +27 -2
  110. package/dist/specification/src/sync/common/rules.js.map +1 -1
  111. package/dist/specification/src/sync/v2/export/controls/Fragment.d.ts +4 -5
  112. package/dist/specification/src/sync/v2/export/controls/Fragment.d.ts.map +1 -1
  113. package/dist/specification/src/sync/v2/export/controls/Fragment.js +29 -20
  114. package/dist/specification/src/sync/v2/export/controls/Fragment.js.map +1 -1
  115. package/dist/specification/src/sync/v2/export/export.d.ts.map +1 -1
  116. package/dist/specification/src/sync/v2/export/export.js +3 -2
  117. package/dist/specification/src/sync/v2/export/export.js.map +1 -1
  118. package/dist/specification/src/sync/v2/export/exportPage.d.ts.map +1 -1
  119. package/dist/specification/src/sync/v2/export/exportPage.js +48 -19
  120. package/dist/specification/src/sync/v2/export/exportPage.js.map +1 -1
  121. package/dist/specification/src/sync/v2/export/exportPageGeneric.d.ts +2 -0
  122. package/dist/specification/src/sync/v2/export/exportPageGeneric.d.ts.map +1 -1
  123. package/dist/specification/src/sync/v2/export/exportPageGeneric.js +17 -6
  124. package/dist/specification/src/sync/v2/export/exportPageGeneric.js.map +1 -1
  125. package/dist/specification/src/sync/v2/export/view-controller-generator.d.ts +54 -6
  126. package/dist/specification/src/sync/v2/export/view-controller-generator.d.ts.map +1 -1
  127. package/dist/specification/src/sync/v2/export/view-controller-generator.js +106 -12
  128. package/dist/specification/src/sync/v2/export/view-controller-generator.js.map +1 -1
  129. package/dist/specification/src/sync/v2/generate/analyticalListReport.js +7 -7
  130. package/dist/specification/src/sync/v2/generate/analyticalListReport.js.map +1 -1
  131. package/dist/specification/src/sync/v2/generate/objectPage.d.ts.map +1 -1
  132. package/dist/specification/src/sync/v2/generate/objectPage.js +56 -2
  133. package/dist/specification/src/sync/v2/generate/objectPage.js.map +1 -1
  134. package/dist/specification/src/sync/v2/generate/schemaAdaptation.d.ts +2 -0
  135. package/dist/specification/src/sync/v2/generate/schemaAdaptation.d.ts.map +1 -1
  136. package/dist/specification/src/sync/v2/generate/schemaAdaptation.js +3 -2
  137. package/dist/specification/src/sync/v2/generate/schemaAdaptation.js.map +1 -1
  138. package/dist/specification/src/sync/v2/generate/utils.d.ts +16 -1
  139. package/dist/specification/src/sync/v2/generate/utils.d.ts.map +1 -1
  140. package/dist/specification/src/sync/v2/generate/utils.js +30 -18
  141. package/dist/specification/src/sync/v2/generate/utils.js.map +1 -1
  142. package/dist/specification/src/sync/v2/genericSchemaHandling/controls/FilterBar.js +4 -4
  143. package/dist/specification/src/sync/v2/genericSchemaHandling/controls/MultiEdit.d.ts +12 -0
  144. package/dist/specification/src/sync/v2/genericSchemaHandling/controls/MultiEdit.d.ts.map +1 -0
  145. package/dist/specification/src/sync/v2/genericSchemaHandling/controls/MultiEdit.js +167 -0
  146. package/dist/specification/src/sync/v2/genericSchemaHandling/controls/MultiEdit.js.map +1 -0
  147. package/dist/specification/src/sync/v2/genericSchemaHandling/controls/MultiTable.js +3 -3
  148. package/dist/specification/src/sync/v2/genericSchemaHandling/controls/MultiTable.js.map +1 -1
  149. package/dist/specification/src/sync/v2/genericSchemaHandling/controls/Table.d.ts +60 -2
  150. package/dist/specification/src/sync/v2/genericSchemaHandling/controls/Table.d.ts.map +1 -1
  151. package/dist/specification/src/sync/v2/genericSchemaHandling/controls/Table.js +626 -11
  152. package/dist/specification/src/sync/v2/genericSchemaHandling/controls/Table.js.map +1 -1
  153. package/dist/specification/src/sync/v2/genericSchemaHandling/controls/index.d.ts +1 -0
  154. package/dist/specification/src/sync/v2/genericSchemaHandling/controls/index.d.ts.map +1 -1
  155. package/dist/specification/src/sync/v2/genericSchemaHandling/controls/index.js +1 -0
  156. package/dist/specification/src/sync/v2/genericSchemaHandling/controls/index.js.map +1 -1
  157. package/dist/specification/src/sync/v2/genericSchemaHandling/pages/pageAccess.d.ts.map +1 -1
  158. package/dist/specification/src/sync/v2/genericSchemaHandling/pages/pageAccess.js +30 -6
  159. package/dist/specification/src/sync/v2/genericSchemaHandling/pages/pageAccess.js.map +1 -1
  160. package/dist/specification/src/sync/v2/types.d.ts +2 -0
  161. package/dist/specification/src/sync/v2/types.d.ts.map +1 -1
  162. package/dist/specification/src/sync/v2/types.js.map +1 -1
  163. package/dist/specification/src/sync/v2/utils.d.ts +25 -0
  164. package/dist/specification/src/sync/v2/utils.d.ts.map +1 -1
  165. package/dist/specification/src/sync/v2/utils.js +28 -4
  166. package/dist/specification/src/sync/v2/utils.js.map +1 -1
  167. package/dist/specification/src/sync/v4/application.d.ts +12 -0
  168. package/dist/specification/src/sync/v4/application.d.ts.map +1 -1
  169. package/dist/specification/src/sync/v4/application.js +28 -3
  170. package/dist/specification/src/sync/v4/application.js.map +1 -1
  171. package/dist/specification/src/sync/v4/export/controls/FilterBar.d.ts +1 -2
  172. package/dist/specification/src/sync/v4/export/controls/FilterBar.d.ts.map +1 -1
  173. package/dist/specification/src/sync/v4/export/controls/FilterBar.js +1 -2
  174. package/dist/specification/src/sync/v4/export/controls/FilterBar.js.map +1 -1
  175. package/dist/specification/src/sync/v4/export/controls/Header.d.ts +3 -5
  176. package/dist/specification/src/sync/v4/export/controls/Header.d.ts.map +1 -1
  177. package/dist/specification/src/sync/v4/export/controls/Header.js +2 -7
  178. package/dist/specification/src/sync/v4/export/controls/Header.js.map +1 -1
  179. package/dist/specification/src/sync/v4/export/controls/HeaderAction.d.ts +9 -3
  180. package/dist/specification/src/sync/v4/export/controls/HeaderAction.d.ts.map +1 -1
  181. package/dist/specification/src/sync/v4/export/controls/HeaderAction.js +10 -6
  182. package/dist/specification/src/sync/v4/export/controls/HeaderAction.js.map +1 -1
  183. package/dist/specification/src/sync/v4/export/controls/ObjectPageCustomSection.d.ts +1 -2
  184. package/dist/specification/src/sync/v4/export/controls/ObjectPageCustomSection.d.ts.map +1 -1
  185. package/dist/specification/src/sync/v4/export/controls/ObjectPageCustomSection.js +1 -2
  186. package/dist/specification/src/sync/v4/export/controls/ObjectPageCustomSection.js.map +1 -1
  187. package/dist/specification/src/sync/v4/export/controls/ObjectPageTable.d.ts +11 -51
  188. package/dist/specification/src/sync/v4/export/controls/ObjectPageTable.d.ts.map +1 -1
  189. package/dist/specification/src/sync/v4/export/controls/ObjectPageTable.js +95 -246
  190. package/dist/specification/src/sync/v4/export/controls/ObjectPageTable.js.map +1 -1
  191. package/dist/specification/src/sync/v4/export/controls/Table.d.ts +6 -21
  192. package/dist/specification/src/sync/v4/export/controls/Table.d.ts.map +1 -1
  193. package/dist/specification/src/sync/v4/export/controls/Table.js +46 -37
  194. package/dist/specification/src/sync/v4/export/controls/Table.js.map +1 -1
  195. package/dist/specification/src/sync/v4/export/controls/ToolBarAction.d.ts +1 -2
  196. package/dist/specification/src/sync/v4/export/controls/ToolBarAction.d.ts.map +1 -1
  197. package/dist/specification/src/sync/v4/export/controls/ToolBarAction.js +3 -4
  198. package/dist/specification/src/sync/v4/export/controls/ToolBarAction.js.map +1 -1
  199. package/dist/specification/src/sync/v4/export/factory.d.ts.map +1 -1
  200. package/dist/specification/src/sync/v4/export/factory.js +2 -4
  201. package/dist/specification/src/sync/v4/export/factory.js.map +1 -1
  202. package/dist/specification/src/sync/v4/export/fpmCustomPage.d.ts +1 -0
  203. package/dist/specification/src/sync/v4/export/fpmCustomPage.d.ts.map +1 -1
  204. package/dist/specification/src/sync/v4/export/fpmCustomPage.js +212 -46
  205. package/dist/specification/src/sync/v4/export/fpmCustomPage.js.map +1 -1
  206. package/dist/specification/src/sync/v4/generate/app.d.ts +11 -0
  207. package/dist/specification/src/sync/v4/generate/app.d.ts.map +1 -0
  208. package/dist/specification/src/sync/v4/generate/app.js +31 -0
  209. package/dist/specification/src/sync/v4/generate/app.js.map +1 -0
  210. package/dist/specification/src/sync/v4/generate/fpm-custom-page/annotations.d.ts +13 -0
  211. package/dist/specification/src/sync/v4/generate/fpm-custom-page/annotations.d.ts.map +1 -1
  212. package/dist/specification/src/sync/v4/generate/fpm-custom-page/annotations.js +93 -13
  213. package/dist/specification/src/sync/v4/generate/fpm-custom-page/annotations.js.map +1 -1
  214. package/dist/specification/src/sync/v4/generate/fpm-custom-page/extensions.d.ts.map +1 -1
  215. package/dist/specification/src/sync/v4/generate/fpm-custom-page/extensions.js +4 -3
  216. package/dist/specification/src/sync/v4/generate/fpm-custom-page/extensions.js.map +1 -1
  217. package/dist/specification/src/sync/v4/generate/fpm-custom-page/generator.d.ts.map +1 -1
  218. package/dist/specification/src/sync/v4/generate/fpm-custom-page/generator.js +29 -27
  219. package/dist/specification/src/sync/v4/generate/fpm-custom-page/generator.js.map +1 -1
  220. package/dist/specification/src/sync/v4/generate/fpm-custom-page/utils.d.ts.map +1 -1
  221. package/dist/specification/src/sync/v4/generate/fpm-custom-page/utils.js +12 -3
  222. package/dist/specification/src/sync/v4/generate/fpm-custom-page/utils.js.map +1 -1
  223. package/dist/specification/src/sync/v4/generate/list-report/ListReportUtils.d.ts +32 -13
  224. package/dist/specification/src/sync/v4/generate/list-report/ListReportUtils.d.ts.map +1 -1
  225. package/dist/specification/src/sync/v4/generate/list-report/ListReportUtils.js +103 -78
  226. package/dist/specification/src/sync/v4/generate/list-report/ListReportUtils.js.map +1 -1
  227. package/dist/specification/src/sync/v4/generate/list-report/listReport.d.ts +13 -6
  228. package/dist/specification/src/sync/v4/generate/list-report/listReport.d.ts.map +1 -1
  229. package/dist/specification/src/sync/v4/generate/list-report/listReport.js +107 -108
  230. package/dist/specification/src/sync/v4/generate/list-report/listReport.js.map +1 -1
  231. package/dist/specification/src/sync/v4/generate/objectPage.d.ts +1 -2
  232. package/dist/specification/src/sync/v4/generate/objectPage.d.ts.map +1 -1
  233. package/dist/specification/src/sync/v4/generate/objectPage.js +162 -118
  234. package/dist/specification/src/sync/v4/generate/objectPage.js.map +1 -1
  235. package/dist/specification/src/sync/v4/import/pages/fpmCustomPage.d.ts.map +1 -1
  236. package/dist/specification/src/sync/v4/import/pages/fpmCustomPage.js +20 -0
  237. package/dist/specification/src/sync/v4/import/pages/fpmCustomPage.js.map +1 -1
  238. package/dist/specification/src/sync/v4/import/pages/objectPage.d.ts.map +1 -1
  239. package/dist/specification/src/sync/v4/import/pages/objectPage.js +11 -50
  240. package/dist/specification/src/sync/v4/import/pages/objectPage.js.map +1 -1
  241. package/dist/specification/src/sync/v4/sync-rules/App.d.ts +2 -4
  242. package/dist/specification/src/sync/v4/sync-rules/App.d.ts.map +1 -1
  243. package/dist/specification/src/sync/v4/sync-rules/App.js +2 -1
  244. package/dist/specification/src/sync/v4/sync-rules/App.js.map +1 -1
  245. package/dist/specification/src/sync/v4/sync-rules/AppSchema.d.ts +2 -1
  246. package/dist/specification/src/sync/v4/sync-rules/AppSchema.d.ts.map +1 -1
  247. package/dist/specification/src/sync/v4/sync-rules/AppSchema.js +3 -1
  248. package/dist/specification/src/sync/v4/sync-rules/AppSchema.js.map +1 -1
  249. package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.d.ts +1 -302
  250. package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.d.ts.map +1 -1
  251. package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.js +0 -753
  252. package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.js.map +1 -1
  253. package/dist/specification/src/sync/v4/sync-rules/Page.d.ts +2 -4
  254. package/dist/specification/src/sync/v4/sync-rules/Page.d.ts.map +1 -1
  255. package/dist/specification/src/sync/v4/sync-rules/Page.js.map +1 -1
  256. package/dist/specification/src/sync/v4/utils/StableIdHelper.d.ts.map +1 -1
  257. package/dist/specification/src/sync/v4/utils/StableIdHelper.js +10 -4
  258. package/dist/specification/src/sync/v4/utils/StableIdHelper.js.map +1 -1
  259. package/dist/specification/src/sync/v4/utils/macros.d.ts +19 -0
  260. package/dist/specification/src/sync/v4/utils/macros.d.ts.map +1 -1
  261. package/dist/specification/src/sync/v4/utils/macros.js +34 -0
  262. package/dist/specification/src/sync/v4/utils/macros.js.map +1 -1
  263. package/dist/specification/src/sync/v4/utils/utils.d.ts +22 -2
  264. package/dist/specification/src/sync/v4/utils/utils.d.ts.map +1 -1
  265. package/dist/specification/src/sync/v4/utils/utils.js +238 -41
  266. package/dist/specification/src/sync/v4/utils/utils.js.map +1 -1
  267. package/dist/specification/test/test-utils/utils.d.ts +1 -0
  268. package/dist/specification/test/test-utils/utils.d.ts.map +1 -1
  269. package/dist/specification/test/test-utils/utils.js +11 -0
  270. package/dist/specification/test/test-utils/utils.js.map +1 -1
  271. package/dist/specification/test/unit/decorators/validity-test-utils.d.ts +2 -2
  272. package/dist/specification/test/unit/decorators/validity-test-utils.d.ts.map +1 -1
  273. package/dist/specification/test/unit/decorators/validity-test-utils.js +6 -6
  274. package/dist/specification/test/unit/decorators/validity-test-utils.js.map +1 -1
  275. package/dist/templates/AnalyticalTableColumnsExtension.xml +3 -3
  276. package/dist/templates/GridTableColumnsExtension.xml +3 -3
  277. package/dist/templates/ResponsiveTableColumnsExtension.xml +2 -2
  278. package/dist/templates/TreeTableColumnsExtension.xml +4 -4
  279. package/dist/templates/fragment.xml +3 -3
  280. package/dist/templates/view.xml +3 -3
  281. package/dist/types/src/apiTypes.d.ts +15 -5
  282. package/dist/types/src/apiTypes.d.ts.map +1 -1
  283. package/dist/types/src/apiTypes.js +1 -0
  284. package/dist/types/src/apiTypes.js.map +1 -1
  285. package/dist/types/src/common/types.d.ts +11 -6
  286. package/dist/types/src/common/types.d.ts.map +1 -1
  287. package/dist/types/src/common/types.js +12 -7
  288. package/dist/types/src/common/types.js.map +1 -1
  289. package/dist/types/src/v4/application.d.ts +15 -0
  290. package/dist/types/src/v4/application.d.ts.map +1 -1
  291. package/dist/types/src/v4/application.js +10 -0
  292. package/dist/types/src/v4/application.js.map +1 -1
  293. package/dist/types/src/v4/controls/ObjectPageTable.d.ts +86 -252
  294. package/dist/types/src/v4/controls/ObjectPageTable.d.ts.map +1 -1
  295. package/dist/types/src/v4/controls/ObjectPageTable.js.map +1 -1
  296. package/package.json +12 -11
@@ -46,16 +46,25 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
46
46
  return (mod && mod.__esModule) ? mod : { "default": mod };
47
47
  };
48
48
  Object.defineProperty(exports, "__esModule", { value: true });
49
- exports.Table = void 0;
49
+ exports.CREATE_WITH_PARAMETER_DIALOG = exports.Table = exports.Fields4CreateWithParametersDialog = exports.CreateWithFilters = exports.DataLoadSettings = void 0;
50
50
  exports.getDefaultTableType = getDefaultTableType;
51
+ exports.getTableType = getTableType;
51
52
  exports.checkTableType = checkTableType;
53
+ exports.getManifestPathForTableSettings = getManifestPathForTableSettings;
54
+ exports.addEntityTypeFieldsAsEnum = addEntityTypeFieldsAsEnum;
52
55
  const i18next_1 = __importDefault(require("i18next"));
53
56
  const ux_specification_types_1 = require("@sap/ux-specification-types");
54
57
  const v2 = __importStar(require("@sap/ux-specification-types/src/v2/genericSchemaHandling/controls/Table"));
55
58
  const decoration_1 = require("../../../common/decoration");
56
59
  const extensionLogger_1 = require("../../../../extensionLogger");
60
+ const utils_1 = require("../../generate/utils");
57
61
  const MultiTable_1 = require("./MultiTable");
58
62
  const MultiViewSingleTable_1 = require("./MultiViewSingleTable");
63
+ const manifestPropertyUtils_1 = require("../../generate/manifestPropertyUtils");
64
+ const utils_2 = require("../../utils");
65
+ const common_1 = require("../../../common");
66
+ const Action_1 = require("./Action");
67
+ const MultiEdit_1 = require("./MultiEdit");
59
68
  /**
60
69
  * This function should return the information whether the given entity type is analytical.
61
70
  * Unfortunately this is currently impossible due to missing information provided by the annotation api.
@@ -67,6 +76,18 @@ const MultiViewSingleTable_1 = require("./MultiViewSingleTable");
67
76
  function isTypeAnalytical(entityTypeDefinition) {
68
77
  return false; // todo: enhance
69
78
  }
79
+ /**
80
+ * Returns the entity set applicable for the given table parameters.
81
+ *
82
+ * @param tableParams - the parameters describing the table
83
+ * @param generateParameters - the parameters used for schema generation
84
+ * @returns the entity set for the given table
85
+ */
86
+ function getEntitySet(tableParams, generateParameters) {
87
+ return tableParams.multiTableInfo?.variantInfo
88
+ ? tableParams.multiTableInfo?.variantInfo.entitySetDefinition
89
+ : generateParameters.entitySet;
90
+ }
70
91
  /**
71
92
  * Returns the default table type used for tables for the given entity type (i.e. the table type which will be used by Fiori Elements if no manifest setting for the table type is available).
72
93
  *
@@ -77,6 +98,71 @@ function getDefaultTableType(entityTypeDefinition) {
77
98
  const isAnalytical = isTypeAnalytical(entityTypeDefinition);
78
99
  return isAnalytical ? v2.TableTypeV2Enum.AnalyticalTable : v2.TableTypeV2Enum.ResponsiveTable;
79
100
  }
101
+ /**
102
+ * Returns the table type valid for the artifact described by given parameters.
103
+ *
104
+ * @param tableParams - the parameters describing the table
105
+ * @returns the table type for the given table
106
+ */
107
+ function getTableType(tableParams) {
108
+ if (tableParams.multiTableInfo?.variantInfo) {
109
+ return tableParams.multiTableInfo.variantInfo.tableType;
110
+ }
111
+ const tableSettings = tableParams.settings?.tableSettings;
112
+ const tableType = (tableSettings && tableSettings['type']) ||
113
+ tableParams.settings?.tableType ||
114
+ getDefaultTableType(tableParams.entityType);
115
+ return tableType;
116
+ }
117
+ /**
118
+ * Checks whether the table described by the given parameters is a responsive table.
119
+ *
120
+ * @param tableParams - the parameters describing the table
121
+ * @returns true if the table is a responsive table, false otherwise
122
+ */
123
+ function isResponsiveTable(tableParams) {
124
+ return getTableType(tableParams) === v2.TableTypeV2Enum.ResponsiveTable;
125
+ }
126
+ /**
127
+ * Checks whether the table described by the given parameters is a ui table.
128
+ *
129
+ * @param tableParams - the parameters describing the table
130
+ * @returns true if the table is a ui table, false otherwise
131
+ */
132
+ function isUiTable(tableParams) {
133
+ return !isResponsiveTable(tableParams) && !tableParams.multiTableInfo?.variantInfo?.isChart;
134
+ }
135
+ /**
136
+ * Get the tableSettings object from the manifest applicable to the specified table.
137
+ *
138
+ * @param tableParams - the parameters describing the table
139
+ * @returns the tableSettings or undefined if no tableSettings are applicable
140
+ */
141
+ function getTableSettings(tableParams) {
142
+ return ((tableParams.multiTableInfo?.variantInfo &&
143
+ tableParams.multiTableInfo.variantInfo.variantDefinition['tableSettings']) ||
144
+ (tableParams.settings && tableParams.settings['tableSettings']));
145
+ }
146
+ /**
147
+ * Returns whether the specified table is configured a multi-selection table.
148
+ *
149
+ * @param tableParams - the parameters describing the table
150
+ * @returns whether the table is multi-select
151
+ */
152
+ function isMultiSelect(tableParams) {
153
+ const tableSettings = getTableSettings(tableParams);
154
+ return tableSettings?.['multiSelect'] === true;
155
+ }
156
+ /**
157
+ * Checks whether the table described by the given parameters has selectAll switched on.
158
+ *
159
+ * @param tableParams - the parameters describing the table
160
+ * @returns true if the table has selectAll switched on, false otherwise
161
+ */
162
+ function isSelectAll(tableParams) {
163
+ const tableSettings = getTableSettings(tableParams);
164
+ return isMultiSelect(tableParams) && tableSettings['selectAll'] !== false; // note that tableSettings are available if isMultiSelect is true
165
+ }
80
166
  /**
81
167
  * Checks whether a given table type is valid. Thereby undefined and empty string are also considered as valid (they represent the default table type).
82
168
  *
@@ -98,6 +184,17 @@ function checkTableType(tableType, logger) {
98
184
  });
99
185
  return false;
100
186
  }
187
+ /**
188
+ * Returns the information whether the tableParams are applicable to a certain SmartTable. This would not be the case
189
+ * for tableParams belonging to the root node of a multi-table scenario or for views in a multi-table scenario which display a chart.
190
+ *
191
+ * @param tableParams the table params
192
+ * @returns the information whether the tableParams are applicable to a certain SmartTable.
193
+ */
194
+ function isForSmartTable(tableParams) {
195
+ return !((tableParams.multiTableInfo && !tableParams.multiTableInfo.variantInfo) ||
196
+ tableParams.multiTableInfo?.variantInfo.isChart); // the properties for the smart table are not applicable to a certain SmartTable on top-level of a multi-table scenario and on views which display a chart
197
+ }
101
198
  /** SyncRule which should be used for all properties with artifact type 'FlexChange' belonging to the SmartTable. */
102
199
  const syncRuleForFlexSmartTable = {
103
200
  flex: {
@@ -105,9 +202,7 @@ const syncRuleForFlexSmartTable = {
105
202
  },
106
203
  processingRuleAdapter: function (processingRule, schemaHandlingParams) {
107
204
  const tableParams = schemaHandlingParams.specificParams;
108
- const isPropertyValid = !((tableParams.multiTableInfo && !tableParams.multiTableInfo.variantInfo) ||
109
- tableParams.multiTableInfo?.variantInfo.isChart); // the property is invalid on top-level of a multi-table scenario and on a view displaying a chart
110
- if (isPropertyValid) {
205
+ if (isForSmartTable(tableParams)) {
111
206
  processingRule.controlId = tableParams.multiTableInfo
112
207
  ? tableParams.multiTableInfo.variantInfo.smartControlId
113
208
  : tableParams.tableId;
@@ -117,16 +212,192 @@ const syncRuleForFlexSmartTable = {
117
212
  }
118
213
  }
119
214
  };
215
+ /**
216
+ * Provide the syncRule for a property with artifact type 'FlexChange' belonging to the ResponsiveTable inside the SmartTable.
217
+ *
218
+ * @param addPatternForBinding information whether the addPatternForBindingChangeOfEnumLR should be added as generate property to the sync rule
219
+ * @returns the syncRule
220
+ */
221
+ function getSyncRuleForFlexResponsiveTable(addPatternForBinding) {
222
+ const syncRule = {
223
+ flex: {
224
+ controlType: () => ux_specification_types_1.ControlType.Table
225
+ },
226
+ processingRuleAdapter: function (processingRule, schemaHandlingParams) {
227
+ const tableParams = schemaHandlingParams.specificParams;
228
+ if ((!tableParams.multiTableInfo || tableParams.multiTableInfo.variantInfo) &&
229
+ isResponsiveTable(tableParams)) {
230
+ // Replicate logic from sap.suite.ui.generic.template.lib.StableIdDefinition, type: ListReport, subType: ResponsiveTable
231
+ const suffix = tableParams.multiTableInfo
232
+ ? `-${tableParams.multiTableInfo.variantInfo.variantDefinition['key']}`
233
+ : '';
234
+ processingRule.controlId = `responsiveTable${suffix}`;
235
+ }
236
+ else {
237
+ delete processingRule.element;
238
+ }
239
+ }
240
+ };
241
+ if (addPatternForBinding) {
242
+ syncRule.generate = decoration_1.addPatternForBindingChangeOfEnumLR; // add option for bindings (already executed in the generation of the generic schema)
243
+ }
244
+ return syncRule;
245
+ }
246
+ /**
247
+ * Helper functions for implementing a ProcessingRuleAdapter for a manifest-based property belonging to the tableSettings.
248
+ * Returns the manifest path for the table settings for the specified table params (which may either be global or for a specific view in a multi-table scenario).
249
+ *
250
+ * @param schemaHandlingParams - the schema handling parameters passed to the ProcessingRuleAdapter
251
+ * @param tableParams - the parameters describing the table
252
+ * @returns the manifest path to the tableSettings of the specified table
253
+ */
254
+ function getManifestPathForTableSettings(schemaHandlingParams, tableParams) {
255
+ const suffix = [];
256
+ if (tableParams.multiTableInfo?.variantInfo) {
257
+ suffix.push('quickVariantSelectionX', 'variants', tableParams.multiTableInfo.variantInfo.accessor);
258
+ }
259
+ suffix.push('tableSettings');
260
+ const manifestPath = (0, utils_2.getManifestPathToPageSettings)(schemaHandlingParams.pageInfo.pagePath, suffix);
261
+ return manifestPath;
262
+ }
263
+ /**
264
+ * This function adapts getSyncRuleForManifestProperty for properties belonging to the tableSettings of a table.
265
+ *
266
+ * @param property - the name of the property in tableSettings section of the manifest the SyncRule should be generated for
267
+ * @param getDisallowReason - optional function to determine whether the property is disallowed for the given table params
268
+ * @param adapt - an optional function that can be used to adapt the schema element representing the manifest property
269
+ * @param provideReferenceAdaptation - an optional function that can be used to provide the ReferenceAdaptationInfo for the manifest property
270
+ * @param expectedType - the expected type of the value of the property (if it is not undefined)
271
+ * @returns the SyncRule for the tableSettings property
272
+ */
273
+ function getSyncRuleForTableSettingsProperty(property, getDisallowReason, adapt, provideReferenceAdaptation, expectedType) {
274
+ // Construct the analyze function for getSyncRuleForManifestProperty
275
+ const analyze = function (element, schemaHandlingParams, generateParameters) {
276
+ const tableParams = schemaHandlingParams.specificParams;
277
+ let disallowedReason;
278
+ // If the view is a chart view we can exclude the property generically. Otherwise check with function getDisallowedReason
279
+ if (tableParams.multiTableInfo?.variantInfo?.isChart) {
280
+ disallowedReason = i18next_1.default.t('NOCHARTPROPERTY', { property: property });
281
+ }
282
+ else if (getDisallowReason) {
283
+ disallowedReason = getDisallowReason(tableParams, generateParameters, element);
284
+ }
285
+ const manifestPath = getManifestPathForTableSettings(schemaHandlingParams, tableParams);
286
+ return { manifestPath, disallowedReason };
287
+ };
288
+ // Create a getReferenceAdaptation function with the correct signature for getSyncRuleForManifestProperty
289
+ const provideReferenceAdaptationWrapper = provideReferenceAdaptation
290
+ ? function (schemaHandlingParams, generateParameters) {
291
+ const tableParams = schemaHandlingParams.specificParams;
292
+ return provideReferenceAdaptation(tableParams, generateParameters);
293
+ }
294
+ : undefined;
295
+ return (0, manifestPropertyUtils_1.getSyncRuleForManifestProperty)(property, analyze, adapt, provideReferenceAdaptationWrapper, expectedType);
296
+ }
297
+ /**
298
+ * This function provides a SyncRule for manifest properties which are only allowed on the top-level of the table definition and not on the level of views in a multi-table scenario.
299
+ * Moreover, these properties possess a parent property that is a child of the page settings (so they are no direct children of the page settings).
300
+ *
301
+ * @param property - the property name in the manifest
302
+ * @param noWorklistI18nKey - the i18n key specifying the warning message in case the property is used in a worklist scenario
303
+ * @param syncRuleProvider - the sync rule provider for the specified manifest property
304
+ * @returns the syncRule for the specified manifest property
305
+ */
306
+ function getOnlyTopLevelNotWorklistSyncRule(property, noWorklistI18nKey, syncRuleProvider) {
307
+ return {
308
+ processingRuleAdapter(processingRule, schemaHandlingParams, generateParameters) {
309
+ const tableParams = schemaHandlingParams.specificParams;
310
+ if (tableParams.multiTableInfo?.variantInfo) {
311
+ delete processingRule.element; // ignore this property on level of single views in multi-table scenario
312
+ return;
313
+ }
314
+ if (tableParams.settings?.isWorklist) {
315
+ const disallowedReason = i18next_1.default.t(noWorklistI18nKey);
316
+ const manifestPath = (0, utils_2.getManifestPathToPageSettings)(schemaHandlingParams.pageInfo.pagePath, []);
317
+ const { value } = (0, utils_2.getManifestPropertyByPath)(generateParameters.manifest, manifestPath, property);
318
+ (0, manifestPropertyUtils_1.handleDisallowedProperty)(disallowedReason, processingRule, value, manifestPath);
319
+ return;
320
+ }
321
+ processingRule.referenceAdaptation = {
322
+ syncRuleProvider: syncRuleProvider
323
+ };
324
+ }
325
+ };
326
+ }
327
+ /**
328
+ * Modifies a schema element such that the fields of the given entity type are added as enumeration values.
329
+ *
330
+ * @param element - the schema element to be modified
331
+ * @param entityTypeDefinition - the entity type hosting the fields
332
+ */
333
+ function addEntityTypeFieldsAsEnum(element, entityTypeDefinition) {
334
+ const itemsEnum = entityTypeDefinition.entityProperties.map((property) => property.name);
335
+ element.items = {
336
+ type: 'string',
337
+ enum: itemsEnum
338
+ };
339
+ }
340
+ class DataLoadSettings {
341
+ }
342
+ exports.DataLoadSettings = DataLoadSettings;
343
+ __decorate([
344
+ (0, decoration_1.descriptionSrcURL)('https://ui5.sap.com/sdk/#/topic/b736ab6ae3654789ba1f9630e5720af3?q=loadDataOnAppLaunch'),
345
+ (0, decoration_1.syncRule)({
346
+ manifest: {},
347
+ processingRuleAdapter(processingRule, schemaHandlingParams) {
348
+ const manifestPath = (0, utils_2.getManifestPathToPageSettings)(schemaHandlingParams.pageInfo.pagePath, [
349
+ 'dataLoadSettings'
350
+ ]);
351
+ processingRule.manifestPath = manifestPath;
352
+ const tableParams = schemaHandlingParams.specificParams;
353
+ if (tableParams.multiTableInfo && !tableParams.multiTableInfo.variantInfo) {
354
+ processingRule.element.description += '\n' + i18next_1.default.t('LOADDATAONAPPLAUNCHMULTITABLE'); // add information to the description providing specific information in multi-table scenarios
355
+ }
356
+ }
357
+ }),
358
+ (0, decoration_1.validity)({
359
+ since: '1.75.2'
360
+ })
361
+ ], DataLoadSettings.prototype, "loadDataOnAppLaunch", void 0);
362
+ class CreateWithFilters {
363
+ }
364
+ exports.CreateWithFilters = CreateWithFilters;
365
+ __decorate([
366
+ (0, decoration_1.descriptionSrcURL)('https://ui5.sap.com/sdk/#/topic/189e2d8a59f04a2693a4fde7f4a91a65?q=createWithFilters'),
367
+ (0, decoration_1.syncRule)({
368
+ manifest: {},
369
+ processingRuleAdapter(processingRule, schemaHandlingParams) {
370
+ const manifestPath = (0, utils_2.getManifestPathToPageSettings)(schemaHandlingParams.pageInfo.pagePath, [
371
+ 'createWithFilters'
372
+ ]);
373
+ processingRule.manifestPath = manifestPath;
374
+ }
375
+ })
376
+ ], CreateWithFilters.prototype, "strategy", void 0);
377
+ class Fields4CreateWithParametersDialog {
378
+ }
379
+ exports.Fields4CreateWithParametersDialog = Fields4CreateWithParametersDialog;
380
+ __decorate([
381
+ (0, decoration_1.validity)({
382
+ since: '1.77.0'
383
+ }),
384
+ (0, decoration_1.syncRule)({
385
+ processingRuleAdapter(processingRule, schemaHandlingParams) {
386
+ const entityTypeDefinition = schemaHandlingParams.specificParams;
387
+ addEntityTypeFieldsAsEnum(processingRule.element, entityTypeDefinition);
388
+ }
389
+ })
390
+ ], Fields4CreateWithParametersDialog.prototype, "fields", void 0);
120
391
  class Table {
121
392
  } // Table
122
393
  exports.Table = Table;
123
394
  __decorate([
124
395
  (0, decoration_1.syncRule)((0, MultiTable_1.getSyncRuleForMultiTableManifestProperty)('entitySet')),
125
- (0, decoration_1.descriptionSrcURL)('https://ui5.sap.com/sdk/#/topic/b6b59e4a4c3548cf83ff9c3b955d3ba3')
396
+ (0, decoration_1.descriptionSrcURL)('https://ui5.sap.com/sdk/#/topic/6698b80fc1a543ebb5c07e0781e9b93e')
126
397
  ], Table.prototype, "entitySet", void 0);
127
398
  __decorate([
128
399
  (0, decoration_1.syncRule)((0, MultiTable_1.getSyncRuleForMultiTableManifestProperty)('annotationPath')),
129
- (0, decoration_1.descriptionSrcURL)('https://ui5.sap.com/sdk/#/topic/37aeed74e17a42caa2cba3123f0c15fc')
400
+ (0, decoration_1.descriptionSrcURL)('https://ui5.sap.com/sdk/#/topic/97dfeea4a8c346368cea6bf7a3e85478')
130
401
  ], Table.prototype, "annotationPath", void 0);
131
402
  __decorate([
132
403
  (0, decoration_1.syncRule)((0, MultiTable_1.getSyncRuleForMultiTableManifestProperty)('showItemNavigationOnChart'))
@@ -141,12 +412,356 @@ __decorate([
141
412
  (0, decoration_1.syncRule)(syncRuleForFlexSmartTable)
142
413
  ], Table.prototype, "showTablePersonalisation", void 0);
143
414
  __decorate([
144
- (0, decoration_1.syncRule)(syncRuleForFlexSmartTable),
145
- (0, decoration_1.validity)({
146
- since: '1.50.0'
147
- })
415
+ (0, decoration_1.syncRule)(syncRuleForFlexSmartTable)
148
416
  ], Table.prototype, "exportType", void 0);
149
417
  __decorate([
150
- (0, decoration_1.syncRule)(syncRuleForFlexSmartTable)
418
+ (0, decoration_1.syncRule)({
419
+ flex: {
420
+ controlType: () => ux_specification_types_1.ControlType.SmartTable
421
+ },
422
+ processingRuleAdapter(processingRule, schemaHandlingParams, generateParameters) {
423
+ // This property is outdated by enableExport, but if it is used we still want to show it in the schema for compatibility reasons.
424
+ const tableParams = schemaHandlingParams.specificParams;
425
+ if (isForSmartTable(tableParams)) {
426
+ const smartControlId = tableParams.multiTableInfo
427
+ ? tableParams.multiTableInfo.variantInfo.smartControlId
428
+ : tableParams.tableId;
429
+ const { message } = (0, utils_1.getExportTablesPropertiesInfo)(generateParameters.flex || [], smartControlId);
430
+ if (message) {
431
+ processingRule.element[ux_specification_types_1.SchemaTag.messages] = [message];
432
+ }
433
+ else {
434
+ processingRule.element[ux_specification_types_1.SchemaTag.hidden] = true;
435
+ }
436
+ processingRule.controlId = smartControlId;
437
+ }
438
+ else {
439
+ // property not applicable to a SmartTable
440
+ delete processingRule.element;
441
+ }
442
+ }
443
+ })
151
444
  ], Table.prototype, "useExportToExcel", void 0);
445
+ __decorate([
446
+ (0, decoration_1.validity)({
447
+ since: '1.145.0'
448
+ }),
449
+ (0, decoration_1.syncRule)(syncRuleForFlexSmartTable)
450
+ ], Table.prototype, "enableExport", void 0);
451
+ __decorate([
452
+ (0, decoration_1.syncRule)(getSyncRuleForFlexResponsiveTable(false))
453
+ ], Table.prototype, "growingThreshold", void 0);
454
+ __decorate([
455
+ (0, decoration_1.syncRule)(getSyncRuleForFlexResponsiveTable(true))
456
+ ], Table.prototype, "popinLayout", void 0);
457
+ __decorate([
458
+ (0, decoration_1.syncRule)(getSyncRuleForFlexResponsiveTable(false))
459
+ ], Table.prototype, "includeItemInSelection", void 0);
460
+ __decorate([
461
+ (0, decoration_1.syncRule)((0, manifestPropertyUtils_1.getSyncRuleForManifestProperty)('tableType',
462
+ // analyze:
463
+ function (element, schemaHandlingParams) {
464
+ const tableParams = schemaHandlingParams.specificParams;
465
+ const manifestPath = (0, utils_2.getManifestPathToPageSettings)(schemaHandlingParams.pageInfo.pagePath);
466
+ // Property tableType is obsolete. For views in a multi-table scenario it was even never supported.
467
+ const disallowedReason = tableParams.multiTableInfo?.variantInfo
468
+ ? manifestPropertyUtils_1.DISALLOWED_WITHOUT_EXPLANATION
469
+ : i18next_1.default.t('PROPERTYOBSOLETE', { property: 'tableType' });
470
+ return {
471
+ manifestPath,
472
+ disallowedReason
473
+ };
474
+ } // analyze
475
+ ))
476
+ ], Table.prototype, "tableType", void 0);
477
+ __decorate([
478
+ (0, decoration_1.syncRule)(getSyncRuleForTableSettingsProperty('type', undefined,
479
+ // adapt:
480
+ function (element, schemaHandlingParams) {
481
+ const tableParams = schemaHandlingParams.specificParams;
482
+ // defaultTypeForMultiView is only set when we are on variant level and the generic level explicitly sets a type
483
+ const defaultTypeForMultiView = tableParams.multiTableInfo?.variantInfo && tableParams.settings?.tableSettings
484
+ ? tableParams.settings.tableSettings['type']
485
+ : '';
486
+ if (tableParams.multiTableInfo?.variantInfo &&
487
+ tableParams.multiTableInfo.usedTableTypes.nonResponsive > 0 &&
488
+ tableParams.multiTableInfo.usedTableTypes.responsive > 0) {
489
+ // We have an illegal combination of responsive and non-responsive table types in a multi-view setting.
490
+ // We will add this as an error to all instances that defer from the default.
491
+ const defaultTableType = defaultTypeForMultiView || getDefaultTableType(tableParams.entityType);
492
+ const isDefaultResponsive = defaultTableType === v2.TableTypeV2Enum.ResponsiveTable;
493
+ if (isResponsiveTable(tableParams) !== isDefaultResponsive) {
494
+ // This is a variant which defers from the default -> consider it as being a reason for the incorrect setup
495
+ element[ux_specification_types_1.SchemaTag.messages] = [
496
+ {
497
+ text: i18next_1.default.t(isDefaultResponsive ? 'MULTITABLEONLYRESPONSIVE' : 'MULTITABLENORESPONSIVE'),
498
+ type: ux_specification_types_1.PropertyMessageType.Warning
499
+ }
500
+ ];
501
+ }
502
+ }
503
+ // The generic schema element points to TableTypeV2Enum which provides all possible table types as an enumeration.
504
+ // In the following cases we need to reduce this enumeration:
505
+ // 1. type for one view in a multi-table scenario in order to avoid combinations of responsive and non-responsive table types
506
+ // 2. Remove AnalyticalTable in case the entity type is not analytical
507
+ // As we cannot determine whether an entity type is analytical yet, we ignore the second case.
508
+ if (tableParams.multiTableInfo?.variantInfo /* || !isTypeAnalytical(tableParams.entityType) */) {
509
+ delete element.$ref; // Remove reference to TableTypeV2Enum
510
+ const enumEntries = [];
511
+ // When
512
+ // - dealing with a variant of a multi-view scenario and
513
+ // - the generic level sets a non-responsive type as default and
514
+ // - there is indeed no responsive table variant yet and
515
+ // - there is at least one other non-responsive table variant
516
+ // In this case changing the type to responsive would automatically break the app, since it creates a mixture of responsive and non-responsive tables.
517
+ // => Suppress responsive from the value-help. If the user really wants to change all variants to responsive he should first remove the explicit generic setting defaulting to non-responsive.
518
+ if (!defaultTypeForMultiView ||
519
+ defaultTypeForMultiView === v2.TableTypeV2Enum.ResponsiveTable ||
520
+ tableParams.multiTableInfo.usedTableTypes.responsive > 0 ||
521
+ tableParams.multiTableInfo.usedTableTypes.nonResponsive < 2) {
522
+ // In all other cases add 'responsive' to the value-help
523
+ enumEntries.push(v2.TableTypeV2Enum.ResponsiveTable);
524
+ }
525
+ if (defaultTypeForMultiView !== v2.TableTypeV2Enum.ResponsiveTable ||
526
+ tableParams.multiTableInfo.usedTableTypes.nonResponsive > 0 ||
527
+ tableParams.multiTableInfo.usedTableTypes.responsive < 2) {
528
+ // Same as above, interchanging the roles of responsive and non-responsive.
529
+ enumEntries.push(v2.TableTypeV2Enum.GridTable);
530
+ //if (isAnalytical(tableParams.entityType)){ // todo: activate this condition
531
+ enumEntries.push(v2.TableTypeV2Enum.AnalyticalTable);
532
+ //}
533
+ enumEntries.push(v2.TableTypeV2Enum.TreeTable);
534
+ }
535
+ (0, common_1.addEnumToSchema)(enumEntries, element);
536
+ }
537
+ }, // adapt
538
+ undefined, 'string')),
539
+ (0, decoration_1.descriptionSrcURL)('https://ui5.sap.com/sdk/#/topic/5d270547f113468e83e06dd7ee408a45')
540
+ ], Table.prototype, "type", void 0);
541
+ __decorate([
542
+ (0, decoration_1.syncRule)((0, manifestPropertyUtils_1.getSyncRuleForManifestProperty)('condensedTableLayout',
543
+ // analyze:
544
+ function (element, schemaHandlingParams) {
545
+ const tableParams = schemaHandlingParams.specificParams;
546
+ const manifestPath = (0, utils_2.getManifestPathToPageSettings)(schemaHandlingParams.pageInfo.pagePath);
547
+ let disallowedReason;
548
+ if (tableParams.multiTableInfo?.variantInfo) {
549
+ disallowedReason = manifestPropertyUtils_1.DISALLOWED_WITHOUT_EXPLANATION; // Setting is not allowed on level of views. Hence, ignore it here without any feedback.
550
+ }
551
+ else if (isResponsiveTable(tableParams)) {
552
+ disallowedReason = i18next_1.default.t('CONDENSEDTABLELAYOUTNOEFFECT');
553
+ }
554
+ return {
555
+ manifestPath,
556
+ disallowedReason
557
+ };
558
+ } // analyze
559
+ ))
560
+ ], Table.prototype, "condensedTableLayout", void 0);
561
+ __decorate([
562
+ (0, decoration_1.syncRule)((0, manifestPropertyUtils_1.getSyncRuleForManifestProperty)('enableTableFilterInPageVariant',
563
+ // analyze:
564
+ function (element, schemaHandlingParams) {
565
+ const tableParams = schemaHandlingParams.specificParams;
566
+ const manifestPath = (0, utils_2.getManifestPathToPageSettings)(schemaHandlingParams.pageInfo.pagePath);
567
+ let disallowedReason;
568
+ if (tableParams.multiTableInfo?.variantInfo) {
569
+ disallowedReason = manifestPropertyUtils_1.DISALLOWED_WITHOUT_EXPLANATION; // Setting is not allowed on level of views. Hence, ignore it here without any feedback.
570
+ }
571
+ else if (tableParams.settings?.isWorklist) {
572
+ disallowedReason = i18next_1.default.t('ENABLETABLEFILTERINPAGEVARIANTWORKLIST');
573
+ }
574
+ else if (tableParams.settings?.smartVariantManagement === false) {
575
+ disallowedReason = i18next_1.default.t('ENABLETABLEFILTERINPAGEVARIANTNOEFFECT');
576
+ }
577
+ return {
578
+ manifestPath,
579
+ disallowedReason
580
+ };
581
+ } // analyze
582
+ ))
583
+ ], Table.prototype, "enableTableFilterInPageVariant", void 0);
584
+ __decorate([
585
+ (0, decoration_1.syncRule)(getSyncRuleForTableSettingsProperty('inlineDelete',
586
+ // getDisallowReason
587
+ function (tableParams) {
588
+ return isResponsiveTable(tableParams) ? undefined : i18next_1.default.t('INLINEDELETEONLYRESPONSIVE');
589
+ }, // getDisallowedReason
590
+ //adapt:
591
+ function (element, schemaHandlingParams, generateParameters, value) {
592
+ if (value === true && isMultiSelect(schemaHandlingParams.specificParams)) {
593
+ element[ux_specification_types_1.SchemaTag.messages] = [
594
+ {
595
+ text: i18next_1.default.t('NOINLINEDELETEANDMULTISELECT'),
596
+ deletable: true,
597
+ type: ux_specification_types_1.PropertyMessageType.Warning
598
+ }
599
+ ];
600
+ }
601
+ } // adapt
602
+ ))
603
+ ], Table.prototype, "inlineDelete", void 0);
604
+ __decorate([
605
+ (0, decoration_1.syncRule)(getSyncRuleForTableSettingsProperty('multiSelect', undefined, // getDisallowedReason
606
+ //adapt:
607
+ function (element, schemaHandlingParams, generateParameters, value) {
608
+ // Problematic scenario: multiSelect and inlineDelete switched on at the same time. Can only happen for responsive tables as inlineDelete is only available for responsive tables.
609
+ const tableParams = schemaHandlingParams.specificParams;
610
+ if (value !== true || !isResponsiveTable(tableParams)) {
611
+ return;
612
+ }
613
+ const tableSettings = getTableSettings(tableParams);
614
+ if (tableSettings?.['inlineDelete'] === true) {
615
+ element[ux_specification_types_1.SchemaTag.messages] = [
616
+ {
617
+ text: i18next_1.default.t('NOINLINEDELETEANDMULTISELECT'),
618
+ deletable: true,
619
+ type: ux_specification_types_1.PropertyMessageType.Warning
620
+ }
621
+ ];
622
+ }
623
+ } // adapt
624
+ )),
625
+ (0, decoration_1.descriptionSrcURL)('https://ui5.sap.com/sdk/#/topic/402fac73b4794a31983609ebdde580d2')
626
+ ], Table.prototype, "multiSelect", void 0);
627
+ __decorate([
628
+ (0, decoration_1.syncRule)(getSyncRuleForTableSettingsProperty('selectAll',
629
+ // getDisallowReason:
630
+ function (tableParams, generateParameters, element) {
631
+ if (!isMultiSelect(tableParams)) {
632
+ // In this case the function returns a disallowedReason. Therefore, the adapt function will not be called.
633
+ // Still the property may be shown to the user (in case it contains a value).
634
+ // The description contains markups that allow the adapt function (below) to provide the correct text depending on the table type.
635
+ // For the warning scenario we simply remove this part.
636
+ element.description = element.description.split('\n')[0];
637
+ return i18next_1.default.t('SELECTALLNOMULTISELECT');
638
+ }
639
+ }, // getDisallowReason
640
+ // adapt:
641
+ function (element, schemaHandlingParams) {
642
+ // add table type dependent information to the description of the property.
643
+ const tableParams = schemaHandlingParams.specificParams;
644
+ const i18nForDefaultInfo = isUiTable(tableParams)
645
+ ? 'SELECTALLDEFAULTINFOUITABLE'
646
+ : 'SELECTALLDEFAULTINFORESPONSIVETABLE';
647
+ element.description += '\n' + i18next_1.default.t(i18nForDefaultInfo);
648
+ } // adapt
649
+ ))
650
+ ], Table.prototype, "selectAll", void 0);
651
+ __decorate([
652
+ (0, decoration_1.syncRule)(getSyncRuleForTableSettingsProperty('selectionLimit', function (tableParams) {
653
+ if (!isUiTable(tableParams) || !isMultiSelect(tableParams)) {
654
+ return i18next_1.default.t('SELECTIONLIMITPREREQUISIT');
655
+ }
656
+ if (isSelectAll(tableParams)) {
657
+ return i18next_1.default.t('SELECTIONLIMITNOSELECTALL');
658
+ }
659
+ })),
660
+ (0, decoration_1.descriptionSrcURL)('https://ui5.sap.com/sdk/#/topic/116b5d82e8c545e2a56e1b51b8b0a9bd?q=selectionLimit')
661
+ ], Table.prototype, "selectionLimit", void 0);
662
+ __decorate([
663
+ (0, decoration_1.syncRule)(getSyncRuleForTableSettingsProperty('copy')),
664
+ (0, decoration_1.validity)({
665
+ since: '1.120.0'
666
+ }),
667
+ (0, decoration_1.descriptionSrcURL)('https://ui5.sap.com/sdk/#/topic/c0f6592a592e47f9bb6d09900de47412')
668
+ ], Table.prototype, "copy", void 0);
669
+ __decorate([
670
+ (0, decoration_1.syncRule)(getOnlyTopLevelNotWorklistSyncRule('dataLoadSettings', 'NODATALOADSETTINGSINWORKLIST', DataLoadSettings))
671
+ ], Table.prototype, "dataLoadSettings", void 0);
672
+ __decorate([
673
+ (0, decoration_1.syncRule)(getOnlyTopLevelNotWorklistSyncRule('createWithFilters', 'NOCREATEWITHFILTERSINWORKLIST', CreateWithFilters))
674
+ ], Table.prototype, "createWithFilters", void 0);
675
+ __decorate([
676
+ (0, decoration_1.validity)({
677
+ since: '1.77.0'
678
+ }),
679
+ (0, decoration_1.descriptionSrcURL)('https://ui5.sap.com/sdk/#/topic/2d04f60da84a49f6bb8617fbf1d3d2aa'),
680
+ (0, decoration_1.syncRule)(getSyncRuleForTableSettingsProperty('createWithParameterDialog',
681
+ // getDisallowReason:
682
+ function (tableParams, generateParameters) {
683
+ const entitySet = getEntitySet(tableParams, generateParameters);
684
+ if (!entitySet) {
685
+ return manifestPropertyUtils_1.DISALLOWED_WITHOUT_EXPLANATION;
686
+ }
687
+ const draftInfo = (0, utils_2.getDraftInfo)(entitySet);
688
+ if (draftInfo.isDraft) {
689
+ return i18next_1.default.t('CREATEWITHDIALOGDRAFT');
690
+ }
691
+ }, // getDisallowReason
692
+ // adapt:
693
+ function (element, schemaHandlingParams, generateParameters, value) {
694
+ (0, utils_2.addConversionExit)(element, 'createWithParameterDialog', value);
695
+ }, // adapt
696
+ // provideReferenceAdaptation:
697
+ function (tableParams) {
698
+ return {
699
+ syncRuleProvider: Fields4CreateWithParametersDialog,
700
+ specificParams: tableParams.multiTableInfo?.variantInfo
701
+ ? tableParams.multiTableInfo.variantInfo.entityTypeDefinition
702
+ : tableParams.entityType,
703
+ suffix: tableParams.multiTableInfo?.variantInfo
704
+ ? tableParams.multiTableInfo.variantInfo.iconTabFilterKey
705
+ : undefined
706
+ };
707
+ }, // provideReferenceAdaptation
708
+ 'object'))
709
+ ], Table.prototype, "createWithParameterDialog", void 0);
710
+ __decorate([
711
+ (0, decoration_1.validity)({
712
+ since: '1.98.0'
713
+ }),
714
+ (0, decoration_1.descriptionSrcURL)('https://ui5.sap.com/sdk/#/topic/7cc4f04364c540c397130ff92f84c3ca'),
715
+ (0, decoration_1.syncRule)(MultiEdit_1.syncRuleMultiEdit)
716
+ ], Table.prototype, "multiEdit", void 0);
717
+ __decorate([
718
+ (0, decoration_1.syncRule)({
719
+ processingRuleAdapter(processingRule, schemaHandlingParams) {
720
+ const tableParams = schemaHandlingParams.specificParams;
721
+ if (tableParams.multiTableInfo && !tableParams.multiTableInfo.variantInfo) {
722
+ delete processingRule.element; // no toolbar defined in the global table settings in the multi-table case
723
+ return;
724
+ }
725
+ processingRule.element[ux_specification_types_1.SchemaTag.propertyIndex] = 0;
726
+ const lineItemInfo = tableParams.multiTableInfo
727
+ ? tableParams.multiTableInfo.variantInfo.lineItemInfo
728
+ : tableParams.lineItemInfo;
729
+ const isChart = tableParams.multiTableInfo?.variantInfo?.isChart;
730
+ const iconTabFilterKey = tableParams.multiTableInfo?.variantInfo?.iconTabFilterKey;
731
+ (0, Action_1.adaptProcessingRuleForToolbar)(processingRule, utils_1.DataFieldTarget.Toolbar, lineItemInfo?.dataFieldInfos ?? [], isChart, iconTabFilterKey);
732
+ }
733
+ })
734
+ ], Table.prototype, "toolbar", void 0);
735
+ /**
736
+ * ConversionExit for property createWithParameterDialog of Table control.
737
+ * Converts between the manifest representation (object with field names as keys) and the config representation (object with array of field names).
738
+ */
739
+ exports.CREATE_WITH_PARAMETER_DIALOG = {
740
+ appToConfig(appValue, parameters, fragments, definition, logger) {
741
+ const hasTypeError = (0, manifestPropertyUtils_1.hasPropertyTypeError)(appValue, 'fields', logger, 'object');
742
+ return appValue && !hasTypeError
743
+ ? {
744
+ fields: Object.keys(appValue['fields'])
745
+ }
746
+ : undefined;
747
+ },
748
+ configToApp(configValue, parameters, fragments, definition, oldAppValue) {
749
+ const configFields = configValue?.['fields'];
750
+ if (Array.isArray(configFields)) {
751
+ const newAppValue = oldAppValue && typeof oldAppValue === 'object' ? { ...oldAppValue } : {};
752
+ if (configFields.length === 0) {
753
+ delete newAppValue['fields'];
754
+ return (0, utils_2.isEmpty)(newAppValue) ? undefined : newAppValue;
755
+ }
756
+ const fields = {}; // the new entry for the fields-property
757
+ const fieldsAsArray = configFields;
758
+ fieldsAsArray.forEach(function (field) {
759
+ fields[field] = { path: field };
760
+ });
761
+ newAppValue['fields'] = fields;
762
+ return newAppValue;
763
+ }
764
+ return oldAppValue; // the fields-property in configValue was untouched (since every change would have converted it into an array). Hence, keep the old value.
765
+ }
766
+ };
152
767
  //# sourceMappingURL=Table.js.map