@sapui5/sap.fe.core 1.99.0 → 1.100.0

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 (246) hide show
  1. package/package.json +4 -2
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AnnotationHelper.js +1 -69
  4. package/src/sap/fe/core/AnnotationHelper.ts +0 -70
  5. package/src/sap/fe/core/AppComponent.js +388 -399
  6. package/src/sap/fe/core/AppComponent.ts +403 -0
  7. package/src/sap/fe/core/AppStateHandler.js +127 -158
  8. package/src/sap/fe/core/BaseController.js +82 -58
  9. package/src/sap/fe/core/BaseController.ts +68 -0
  10. package/src/sap/fe/core/CommonUtils.js +111 -20
  11. package/src/sap/fe/core/CommonUtils.ts +131 -32
  12. package/src/sap/fe/core/ExtensionAPI.js +278 -274
  13. package/src/sap/fe/core/ExtensionAPI.ts +250 -0
  14. package/src/sap/fe/core/PageController.js +157 -29
  15. package/src/sap/fe/core/PageController.ts +60 -32
  16. package/src/sap/fe/core/RouterProxy.js +694 -756
  17. package/src/sap/fe/core/RouterProxy.ts +11 -9
  18. package/src/sap/fe/core/Synchronization.js +21 -31
  19. package/src/sap/fe/core/TemplateComponent.js +1 -1
  20. package/src/sap/fe/core/TemplateComponent.ts +10 -3
  21. package/src/sap/fe/core/TemplateModel.js +20 -38
  22. package/src/sap/fe/core/TemplateModel.ts +1 -1
  23. package/src/sap/fe/core/TransactionHelper.js +1354 -1370
  24. package/src/sap/fe/core/TransactionHelper.ts +33 -22
  25. package/src/sap/fe/core/actions/collaboration/ActivitySync.js +392 -0
  26. package/src/sap/fe/core/actions/collaboration/ActivitySync.ts +355 -0
  27. package/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +136 -0
  28. package/src/sap/fe/core/actions/collaboration/CollaborationCommon.ts +119 -0
  29. package/src/sap/fe/core/actions/collaboration/Manage.js +262 -0
  30. package/src/sap/fe/core/actions/collaboration/Manage.ts +244 -0
  31. package/src/sap/fe/core/actions/collaboration/ManageDialog.fragment.xml +103 -0
  32. package/src/sap/fe/core/actions/collaboration/UserDetails.fragment.xml +13 -0
  33. package/src/sap/fe/core/actions/draft.js +30 -68
  34. package/src/sap/fe/core/actions/draft.ts +44 -71
  35. package/src/sap/fe/core/actions/messageHandling.js +55 -36
  36. package/src/sap/fe/core/actions/messageHandling.ts +66 -46
  37. package/src/sap/fe/core/actions/operations.js +34 -15
  38. package/src/sap/fe/core/actions/operations.ts +48 -18
  39. package/src/sap/fe/core/actions/sticky.js +17 -4
  40. package/src/sap/fe/core/actions/sticky.ts +21 -4
  41. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +69 -66
  42. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.ts +65 -0
  43. package/src/sap/fe/core/controllerextensions/EditFlow.js +1593 -1669
  44. package/src/sap/fe/core/controllerextensions/EditFlow.ts +1672 -0
  45. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +79 -54
  46. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +61 -0
  47. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +718 -779
  48. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +783 -0
  49. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +796 -816
  50. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +803 -0
  51. package/src/sap/fe/core/controllerextensions/InternalRouting.js +1004 -1005
  52. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +978 -0
  53. package/src/sap/fe/core/controllerextensions/KPIManagement.js +487 -521
  54. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +2 -2
  55. package/src/sap/fe/core/controllerextensions/MassEdit.js +141 -169
  56. package/src/sap/fe/core/controllerextensions/MassEdit.ts +156 -0
  57. package/src/sap/fe/core/controllerextensions/MessageHandler.js +233 -244
  58. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +225 -0
  59. package/src/sap/fe/core/controllerextensions/PageReady.js +301 -336
  60. package/src/sap/fe/core/controllerextensions/PageReady.ts +12 -10
  61. package/src/sap/fe/core/controllerextensions/Paginator.js +188 -175
  62. package/src/sap/fe/core/controllerextensions/Paginator.ts +163 -0
  63. package/src/sap/fe/core/controllerextensions/Placeholder.js +157 -149
  64. package/src/sap/fe/core/controllerextensions/Placeholder.ts +151 -0
  65. package/src/sap/fe/core/controllerextensions/Routing.js +144 -125
  66. package/src/sap/fe/core/controllerextensions/Routing.ts +132 -0
  67. package/src/sap/fe/core/controllerextensions/RoutingListener.js +7 -6
  68. package/src/sap/fe/core/controllerextensions/RoutingListener.ts +3 -0
  69. package/src/sap/fe/core/controllerextensions/Share.js +230 -268
  70. package/src/sap/fe/core/controllerextensions/Share.ts +231 -0
  71. package/src/sap/fe/core/controllerextensions/SideEffects.js +592 -633
  72. package/src/sap/fe/core/controllerextensions/SideEffects.ts +8 -7
  73. package/src/sap/fe/core/controllerextensions/ViewState.js +788 -806
  74. package/src/sap/fe/core/controllerextensions/ViewState.ts +805 -0
  75. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +2 -2
  76. package/src/sap/fe/core/controls/ActionPartial.fragment.xml +2 -2
  77. package/src/sap/fe/core/controls/CommandExecution.js +67 -66
  78. package/src/sap/fe/core/controls/CommandExecution.ts +72 -0
  79. package/src/sap/fe/core/controls/ConditionalWrapper.js +90 -75
  80. package/src/sap/fe/core/controls/ConditionalWrapper.ts +83 -0
  81. package/src/sap/fe/core/controls/CustomQuickViewPage.js +130 -125
  82. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +126 -0
  83. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +103 -112
  84. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +101 -0
  85. package/src/sap/fe/core/controls/FieldWrapper.js +122 -135
  86. package/src/sap/fe/core/controls/FieldWrapper.ts +115 -0
  87. package/src/sap/fe/core/controls/FilterBar.js +162 -159
  88. package/src/sap/fe/core/controls/FilterBar.ts +143 -0
  89. package/src/sap/fe/core/controls/FormElementWrapper.js +45 -39
  90. package/src/sap/fe/core/controls/FormElementWrapper.ts +40 -0
  91. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +37 -42
  92. package/src/sap/fe/core/controls/MultiValueParameterDelegate.ts +31 -0
  93. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +126 -116
  94. package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +98 -0
  95. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +241 -255
  96. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +245 -0
  97. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +150 -141
  98. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +125 -0
  99. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +335 -322
  100. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +337 -0
  101. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +74 -74
  102. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +70 -0
  103. package/src/sap/fe/core/converters/ConverterContext.js +348 -379
  104. package/src/sap/fe/core/converters/ConverterContext.ts +19 -16
  105. package/src/sap/fe/core/converters/ManifestSettings.js +12 -1
  106. package/src/sap/fe/core/converters/ManifestSettings.ts +12 -1
  107. package/src/sap/fe/core/converters/ManifestWrapper.js +354 -378
  108. package/src/sap/fe/core/converters/ManifestWrapper.ts +10 -0
  109. package/src/sap/fe/core/converters/MetaModelConverter.js +6 -4
  110. package/src/sap/fe/core/converters/MetaModelConverter.ts +5 -2
  111. package/src/sap/fe/core/converters/TemplateConverter.js +1 -1
  112. package/src/sap/fe/core/converters/TemplateConverter.ts +2 -1
  113. package/src/sap/fe/core/converters/annotations/DataField.js +26 -12
  114. package/src/sap/fe/core/converters/annotations/DataField.ts +37 -13
  115. package/src/sap/fe/core/converters/controls/Common/Form.js +2 -2
  116. package/src/sap/fe/core/converters/controls/Common/Form.ts +4 -2
  117. package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
  118. package/src/sap/fe/core/converters/controls/Common/KPI.ts +3 -2
  119. package/src/sap/fe/core/converters/controls/Common/Table.js +130 -23
  120. package/src/sap/fe/core/converters/controls/Common/Table.ts +134 -29
  121. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +118 -53
  122. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +156 -93
  123. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +161 -207
  124. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +148 -206
  125. package/src/sap/fe/core/converters/helpers/Aggregation.js +115 -133
  126. package/src/sap/fe/core/converters/helpers/BindingHelper.js +20 -6
  127. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +16 -4
  128. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +12 -1
  129. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +11 -0
  130. package/src/sap/fe/core/converters/helpers/Key.js +42 -57
  131. package/src/sap/fe/core/converters/helpers/Key.ts +1 -1
  132. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +25 -4
  133. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +20 -3
  134. package/src/sap/fe/core/converters/templates/ListReportConverter.js +10 -4
  135. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +15 -4
  136. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +7 -5
  137. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +5 -1
  138. package/src/sap/fe/core/designtime/AppComponent.designtime.js +92 -98
  139. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +91 -0
  140. package/src/sap/fe/core/formatters/CollaborationFormatter.js +104 -0
  141. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +60 -0
  142. package/src/sap/fe/core/formatters/TableFormatter.js +53 -2
  143. package/src/sap/fe/core/formatters/TableFormatter.ts +51 -0
  144. package/src/sap/fe/core/fpm/Component.js +50 -54
  145. package/src/sap/fe/core/fpm/Component.ts +48 -0
  146. package/src/sap/fe/core/helpers/AppStartupHelper.js +323 -309
  147. package/src/sap/fe/core/helpers/AppStartupHelper.ts +363 -337
  148. package/src/sap/fe/core/helpers/BindingExpression.js +7 -7
  149. package/src/sap/fe/core/helpers/BindingExpression.ts +7 -7
  150. package/src/sap/fe/core/helpers/ClassSupport.js +186 -62
  151. package/src/sap/fe/core/helpers/ClassSupport.ts +168 -52
  152. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +5 -4
  153. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -5
  154. package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
  155. package/src/sap/fe/core/helpers/FPMHelper.ts +1 -1
  156. package/src/sap/fe/core/helpers/MassEditHelper.js +601 -684
  157. package/src/sap/fe/core/helpers/MassEditHelper.ts +699 -0
  158. package/src/sap/fe/core/helpers/ModelHelper.js +25 -1
  159. package/src/sap/fe/core/helpers/ModelHelper.ts +23 -0
  160. package/src/sap/fe/core/helpers/SemanticDateOperators.js +5 -1
  161. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +4 -0
  162. package/src/sap/fe/core/library.js +426 -451
  163. package/src/sap/fe/core/library.support.js +22 -33
  164. package/src/sap/fe/core/library.support.ts +23 -0
  165. package/src/sap/fe/core/library.ts +420 -0
  166. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +5 -3
  167. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +4 -1
  168. package/src/sap/fe/core/messagebundle.properties +22 -5
  169. package/src/sap/fe/core/messagebundle_ar.properties +27 -7
  170. package/src/sap/fe/core/messagebundle_bg.properties +27 -7
  171. package/src/sap/fe/core/messagebundle_ca.properties +27 -7
  172. package/src/sap/fe/core/messagebundle_cs.properties +27 -7
  173. package/src/sap/fe/core/messagebundle_cy.properties +27 -7
  174. package/src/sap/fe/core/messagebundle_da.properties +27 -7
  175. package/src/sap/fe/core/messagebundle_de.properties +27 -7
  176. package/src/sap/fe/core/messagebundle_el.properties +27 -7
  177. package/src/sap/fe/core/messagebundle_en.properties +27 -7
  178. package/src/sap/fe/core/messagebundle_en_GB.properties +27 -7
  179. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +27 -7
  180. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +27 -7
  181. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +27 -7
  182. package/src/sap/fe/core/messagebundle_es.properties +27 -7
  183. package/src/sap/fe/core/messagebundle_es_MX.properties +27 -7
  184. package/src/sap/fe/core/messagebundle_et.properties +27 -7
  185. package/src/sap/fe/core/messagebundle_fi.properties +28 -8
  186. package/src/sap/fe/core/messagebundle_fr.properties +28 -8
  187. package/src/sap/fe/core/messagebundle_fr_CA.properties +29 -9
  188. package/src/sap/fe/core/messagebundle_hi.properties +27 -7
  189. package/src/sap/fe/core/messagebundle_hr.properties +27 -7
  190. package/src/sap/fe/core/messagebundle_hu.properties +27 -7
  191. package/src/sap/fe/core/messagebundle_id.properties +27 -7
  192. package/src/sap/fe/core/messagebundle_it.properties +27 -7
  193. package/src/sap/fe/core/messagebundle_iw.properties +27 -7
  194. package/src/sap/fe/core/messagebundle_ja.properties +26 -6
  195. package/src/sap/fe/core/messagebundle_kk.properties +27 -7
  196. package/src/sap/fe/core/messagebundle_ko.properties +27 -7
  197. package/src/sap/fe/core/messagebundle_lt.properties +27 -7
  198. package/src/sap/fe/core/messagebundle_lv.properties +28 -8
  199. package/src/sap/fe/core/messagebundle_ms.properties +27 -7
  200. package/src/sap/fe/core/messagebundle_nl.properties +27 -7
  201. package/src/sap/fe/core/messagebundle_no.properties +27 -7
  202. package/src/sap/fe/core/messagebundle_pl.properties +27 -7
  203. package/src/sap/fe/core/messagebundle_pt.properties +28 -8
  204. package/src/sap/fe/core/messagebundle_pt_PT.properties +27 -7
  205. package/src/sap/fe/core/messagebundle_ro.properties +27 -7
  206. package/src/sap/fe/core/messagebundle_ru.properties +27 -7
  207. package/src/sap/fe/core/messagebundle_sh.properties +27 -7
  208. package/src/sap/fe/core/messagebundle_sk.properties +27 -7
  209. package/src/sap/fe/core/messagebundle_sl.properties +27 -7
  210. package/src/sap/fe/core/messagebundle_sv.properties +27 -7
  211. package/src/sap/fe/core/messagebundle_th.properties +26 -6
  212. package/src/sap/fe/core/messagebundle_tr.properties +30 -10
  213. package/src/sap/fe/core/messagebundle_uk.properties +27 -7
  214. package/src/sap/fe/core/messagebundle_vi.properties +27 -7
  215. package/src/sap/fe/core/messagebundle_zh_CN.properties +27 -7
  216. package/src/sap/fe/core/messagebundle_zh_TW.properties +27 -7
  217. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +45 -71
  218. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +154 -192
  219. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +4 -4
  220. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +66 -92
  221. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +1 -1
  222. package/src/sap/fe/core/services/NavigationServiceFactory.js +284 -339
  223. package/src/sap/fe/core/services/NavigationServiceFactory.ts +10 -13
  224. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +67 -102
  225. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +5 -2
  226. package/src/sap/fe/core/services/RoutingServiceFactory.js +754 -814
  227. package/src/sap/fe/core/services/RoutingServiceFactory.ts +13 -13
  228. package/src/sap/fe/core/services/ShellServicesFactory.js +649 -736
  229. package/src/sap/fe/core/services/ShellServicesFactory.ts +7 -4
  230. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +567 -592
  231. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +22 -3
  232. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +354 -386
  233. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +21 -14
  234. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +1 -1
  235. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +1 -1
  236. package/src/sap/fe/core/support/CommonHelper.js +1 -1
  237. package/src/sap/fe/core/support/CommonHelper.ts +1 -1
  238. package/src/sap/fe/core/support/Diagnostics.js +36 -48
  239. package/src/sap/fe/core/templating/DataModelPathHelper.js +93 -85
  240. package/src/sap/fe/core/templating/DataModelPathHelper.ts +104 -95
  241. package/src/sap/fe/core/templating/FilterHelper.js +25 -32
  242. package/src/sap/fe/core/templating/FilterHelper.ts +36 -35
  243. package/src/sap/fe/core/templating/PropertyHelper.js +2 -2
  244. package/src/sap/fe/core/templating/PropertyHelper.ts +1 -1
  245. package/src/sap/fe/core/templating/UIFormatters.js +32 -26
  246. package/src/sap/fe/core/templating/UIFormatters.ts +37 -24
@@ -15,7 +15,8 @@ import {
15
15
  PropertyPath,
16
16
  SelectionVariantType,
17
17
  SelectOptionType,
18
- UIAnnotationTypes
18
+ UIAnnotationTypes,
19
+ FieldGroupType
19
20
  } from "@sap-ux/vocabularies-types";
20
21
  import {
21
22
  ActionType,
@@ -23,6 +24,7 @@ import {
23
24
  CreationMode,
24
25
  FormatOptionsType,
25
26
  HorizontalAlign,
27
+ Importance,
26
28
  ManifestTableColumn,
27
29
  NavigationSettingsConfiguration,
28
30
  NavigationTargetConfiguration,
@@ -101,10 +103,10 @@ import { AggregationHelper } from "../../helpers/Aggregation";
101
103
  import { DisplayMode, EDM_TYPE_MAPPING, getDisplayMode } from "sap/fe/core/templating/DisplayModeFormatter";
102
104
  import { getMessageTypeFromCriticalityType } from "./Criticality";
103
105
  import { FilterFunctions } from "@sap-ux/vocabularies-types/dist/generated/Capabilities";
106
+ import { SemanticKey } from "@sap-ux/vocabularies-types/types/generated/Common";
104
107
  import { getNonSortablePropertiesRestrictions } from "sap/fe/core/templating/EntitySetHelper";
105
108
  import {
106
109
  generateStandardActionsContext,
107
- isExternalCreateConfigured,
108
110
  StandardActionConfigType,
109
111
  getDeleteVisibility,
110
112
  getStandardActionCreate,
@@ -116,7 +118,8 @@ import {
116
118
  getCreateVisibility,
117
119
  isInDisplayMode,
118
120
  getMassEditVisibility,
119
- getRestrictions
121
+ getRestrictions,
122
+ getCreationRow
120
123
  } from "./table/StandardActions";
121
124
 
122
125
  export type TableAnnotationConfiguration = {
@@ -147,7 +150,7 @@ export type TableAnnotationConfiguration = {
147
150
  aggregateConditions?: string;
148
151
 
149
152
  /** Create new entries */
150
- create: CreateBehaviour | CreateBehaviourExternal;
153
+ create: CreateBehavior | CreateBehaviorExternal;
151
154
  title: string;
152
155
  searchable: boolean;
153
156
  };
@@ -155,9 +158,9 @@ export type TableAnnotationConfiguration = {
155
158
  /**
156
159
  * New entries are created within the app (default case)
157
160
  */
158
- type CreateBehaviour = {
161
+ type CreateBehavior = {
159
162
  mode: CreationMode;
160
- append: Boolean;
163
+ append: boolean;
161
164
  newAction?: string;
162
165
  navigateToTarget?: string;
163
166
  };
@@ -165,7 +168,7 @@ type CreateBehaviour = {
165
168
  /**
166
169
  * New entries are created by navigating to some target
167
170
  */
168
- type CreateBehaviourExternal = {
171
+ type CreateBehaviorExternal = {
169
172
  mode: "External";
170
173
  outbound: string;
171
174
  outboundDetail: NavigationTargetConfiguration["outboundDetail"];
@@ -235,6 +238,7 @@ export type BaseTableColumn = ConfigurableObject & {
235
238
  sortable: boolean;
236
239
  horizontalAlign?: HorizontalAlign;
237
240
  formatOptions: FormatOptionsType;
241
+ importance: string;
238
242
  };
239
243
 
240
244
  export type CustomTableColumn = BaseTableColumn & {
@@ -267,6 +271,8 @@ export type AnnotationTableColumn = BaseTableColumn & {
267
271
  delimiter?: boolean;
268
272
  trueValue?: boolean;
269
273
  falseValue?: boolean;
274
+ unit?: string;
275
+ unitProperty?: string;
270
276
  };
271
277
  isDataPointFakeTargetProperty?: boolean;
272
278
  textArrangement?: {
@@ -388,6 +394,7 @@ export function getTableColumns(
388
394
 
389
395
  return insertCustomElements(annotationColumns, manifestColumns, {
390
396
  width: "overwrite",
397
+ importance: "overwrite",
391
398
  isNavigable: "overwrite",
392
399
  availability: "overwrite",
393
400
  settings: "overwrite",
@@ -719,7 +726,7 @@ function getCurrentEntitySetUpdatablePath(converterContext: ConverterContext): s
719
726
  const restrictions = getRestrictions(converterContext);
720
727
  const entitySet = converterContext.getEntitySet();
721
728
  const updatable = restrictions.isUpdatable;
722
- const isOnlyDynamicOnCurrentEntity: any = updatable.isOnlyCurrentEntityExpression && !isConstant(updatable.expression);
729
+ const isOnlyDynamicOnCurrentEntity: any = !isConstant(updatable.expression) && updatable.navigationExpression._type === "Unresolvable";
723
730
  const updatablePropertyPath = (entitySet?.annotations.Capabilities?.UpdateRestrictions?.Updatable as any)?.path;
724
731
 
725
732
  return isOnlyDynamicOnCurrentEntity ? (updatablePropertyPath as string) : "";
@@ -966,7 +973,7 @@ export function getSelectionMode(
966
973
  );
967
974
  let isParentDeletable, parentEntitySetDeletable;
968
975
  if (converterContext.getTemplateType() === TemplateType.ObjectPage) {
969
- isParentDeletable = isPathDeletable(converterContext.getDataModelObjectPath(), undefined);
976
+ isParentDeletable = isPathDeletable(converterContext.getDataModelObjectPath());
970
977
  parentEntitySetDeletable = isParentDeletable ? compileBinding(isParentDeletable, true) : isParentDeletable;
971
978
  }
972
979
 
@@ -1218,7 +1225,7 @@ function _getCreationBehaviour(
1218
1225
  const navigation = navigationSettings?.create || navigationSettings?.detail;
1219
1226
 
1220
1227
  // cross-app
1221
- if (isExternalCreateConfigured(navigationSettings) && navigation) {
1228
+ if (navigation?.outbound && navigation.outboundDetail && navigationSettings?.create) {
1222
1229
  return {
1223
1230
  mode: "External",
1224
1231
  outbound: navigation.outbound as string,
@@ -1378,6 +1385,13 @@ export const getColumnsFromEntityType = function(
1378
1385
  wrap: relatedPropertiesInfo.exportSettingsWrapping
1379
1386
  };
1380
1387
 
1388
+ if (relatedPropertiesInfo.exportUnitName) {
1389
+ columnInfo.exportSettings.unitProperty = relatedPropertiesInfo.exportUnitName;
1390
+ columnInfo.exportSettings.type = "Currency"; // Force to a currency because there's a unitProperty (otherwise the value isn't properly formatted when exported)
1391
+ } else if (relatedPropertiesInfo.exportUnitString) {
1392
+ columnInfo.exportSettings.unit = relatedPropertiesInfo.exportUnitString;
1393
+ }
1394
+
1381
1395
  // Collect information of related columns to be created.
1382
1396
  relatedPropertyNames.forEach(name => {
1383
1397
  columnsToBeCreated[name] = relatedPropertiesInfo.properties[name];
@@ -1404,8 +1418,8 @@ export const getColumnsFromEntityType = function(
1404
1418
  * @param {string} fullPropertyPath The full path to the target property
1405
1419
  * @param {string} relativePath The relative path to the target property based on the context
1406
1420
  * @param {boolean} useDataFieldPrefix Should be prefixed with "DataField::", else it will be prefixed with "Property::"
1407
- * @param {boolean} availableForAdaptation Decides whether column should be available for adaptation
1408
- * @param {string[]} nonSortableColumns The array of all non sortable column names
1421
+ * @param {boolean} availableForAdaptation Decides whether the column should be available for adaptation
1422
+ * @param {string[]} nonSortableColumns The array of all non-sortable column names
1409
1423
  * @param {AggregationHelper} aggregationHelper The aggregationHelper for the entity
1410
1424
  * @param {ConverterContext} converterContext The converter context
1411
1425
  * @returns {AnnotationTableColumn} The annotation column definition
@@ -1438,7 +1452,7 @@ const getColumnDefinitionFromProperty = function(
1438
1452
  oConstraints: propertyTypeConfig.constraints
1439
1453
  }
1440
1454
  : undefined;
1441
- const exportSettings = isDataPointFakeProperty
1455
+ const exportSettings: any = isDataPointFakeProperty
1442
1456
  ? {
1443
1457
  template: getTargetValueOnDataPoint(property)
1444
1458
  }
@@ -1451,6 +1465,17 @@ const getColumnDefinitionFromProperty = function(
1451
1465
  falseValue: property.type === "Edm.Boolean" ? "No" : undefined
1452
1466
  };
1453
1467
 
1468
+ if (!isDataPointFakeProperty) {
1469
+ const oUnitProperty = getAssociatedCurrencyProperty(property) || getAssociatedUnitProperty(property);
1470
+ const sUnitText = property?.annotations?.Measures?.ISOCurrency || property?.annotations?.Measures?.Unit;
1471
+ if (oUnitProperty) {
1472
+ exportSettings.unitProperty = oUnitProperty.name;
1473
+ exportSettings.type = "Currency"; // Force to a currency because there's a unitProperty (otherwise the value isn't properly formatted when exported)
1474
+ } else if (sUnitText) {
1475
+ exportSettings.unit = `${sUnitText}`;
1476
+ }
1477
+ }
1478
+
1454
1479
  const oColumn: any = {
1455
1480
  key: key,
1456
1481
  isGroupable: !isDataPointFakeProperty && !isHidden ? aggregationHelper.isPropertyGroupable(property) : false,
@@ -1497,7 +1522,6 @@ const _isValidColumn = function(dataField: DataFieldAbstractTypes) {
1497
1522
  return !!dataField.Inline;
1498
1523
  case UIAnnotationTypes.DataFieldWithAction:
1499
1524
  case UIAnnotationTypes.DataFieldWithIntentBasedNavigation:
1500
- return false;
1501
1525
  case UIAnnotationTypes.DataField:
1502
1526
  case UIAnnotationTypes.DataFieldWithUrl:
1503
1527
  case UIAnnotationTypes.DataFieldForAnnotation:
@@ -1562,7 +1586,7 @@ export const _getVisibleExpression = function(
1562
1586
  or(not(isAnalyticalGroupHeaderExpanded), isAnalyticalLeaf)
1563
1587
  ]
1564
1588
  );
1565
- return returnExpression ? (expression as BindingExpression<string>) : compileBinding(expression);
1589
+ return returnExpression ? ((expression as any) as BindingExpression<string>) : compileBinding(expression);
1566
1590
  };
1567
1591
 
1568
1592
  /**
@@ -1587,7 +1611,7 @@ const _getFieldGroupHiddenExpressions = function(
1587
1611
  );
1588
1612
  });
1589
1613
  return compileBinding(
1590
- ifElse(or(...(aFieldGroupHiddenExpressions as ExpressionOrPrimitive<boolean>[])), constant(true), constant(false))
1614
+ ifElse(or(...((aFieldGroupHiddenExpressions as any) as ExpressionOrPrimitive<boolean>[])), constant(true), constant(false))
1591
1615
  );
1592
1616
  } else {
1593
1617
  return undefined;
@@ -1653,7 +1677,12 @@ const _getTooltip = function(source: DataFieldAbstractTypes | Property): string
1653
1677
  return undefined;
1654
1678
  }
1655
1679
  };
1656
-
1680
+ export function getRowStatusVisibility(): Expression<boolean> {
1681
+ return formatResult(
1682
+ [bindingExpression(`semanticKeyHasDraftIndicator`, "internal"), bindingExpression(`filteredMessages`, "internal")],
1683
+ tableFormatters.getErrorStatusTextVisibilityFormatter
1684
+ );
1685
+ }
1657
1686
  /**
1658
1687
  * Creates a PropertyInfo for each identified property consumed by a LineItem.
1659
1688
  *
@@ -1790,6 +1819,8 @@ const _getRelativePath = function(dataField: DataFieldAbstractTypes): string {
1790
1819
  case UIAnnotationTypes.DataField:
1791
1820
  case UIAnnotationTypes.DataFieldWithNavigationPath:
1792
1821
  case UIAnnotationTypes.DataFieldWithUrl:
1822
+ case UIAnnotationTypes.DataFieldWithIntentBasedNavigation:
1823
+ case UIAnnotationTypes.DataFieldWithAction:
1793
1824
  relativePath = (dataField as DataField)?.Value?.path;
1794
1825
  break;
1795
1826
 
@@ -1888,13 +1919,72 @@ function getDefaultDraftIndicatorForColumn(name: string, semanticKeys: any[]) {
1888
1919
  if (bSemanticKeyFound) {
1889
1920
  return {
1890
1921
  hasDraftIndicator: true,
1891
- semantickeys: aSemanticKeyValues
1922
+ semantickeys: aSemanticKeyValues,
1923
+ objectStatusTextVisibility: compileBinding(getRowStatusVisibility())
1892
1924
  };
1893
1925
  } else {
1894
1926
  return {};
1895
1927
  }
1896
1928
  }
1897
1929
 
1930
+ /**
1931
+ * Returns the importance value for an annotation column.
1932
+ * If it is not set explicitly via annotations, the default annotation importance is returned.
1933
+ *
1934
+ * @param lineItem
1935
+ * @param semanticKeys
1936
+ * @returns {Importance} The importance value
1937
+ */
1938
+ function _getAnnotationImportance(lineItem: DataFieldAbstractTypes, semanticKeys: SemanticKey): Importance {
1939
+ switch (lineItem.annotations?.UI?.Importance) {
1940
+ case "UI.ImportanceType/High":
1941
+ return Importance.High;
1942
+ case "UI.ImportanceType/Medium":
1943
+ return Importance.Medium;
1944
+ case "UI.ImportanceType/Low":
1945
+ return Importance.Low;
1946
+ default:
1947
+ return _getDefaultAnnotationImportance(lineItem, semanticKeys);
1948
+ }
1949
+ }
1950
+
1951
+ /**
1952
+ * Returns the default importance value for an annotation column as inferred by semantic key configurations.
1953
+ *
1954
+ * @param lineItem
1955
+ * @param semanticKeys
1956
+ * @returns {Importance} The importance value
1957
+ */
1958
+ function _getDefaultAnnotationImportance(lineItem: DataFieldAbstractTypes, semanticKeys: SemanticKey): Importance {
1959
+ //Check if semanticKeys are defined at the EntitySet level
1960
+ if (!semanticKeys || semanticKeys.length === 0) {
1961
+ return Importance.None;
1962
+ }
1963
+
1964
+ if (lineItem.$Type === UIAnnotationTypes.DataFieldForAnnotation) {
1965
+ const targetDataField = (lineItem as DataFieldForAnnotation).Target?.$target;
1966
+
1967
+ //If a FieldGroup contains a semanticKey, importance set to High
1968
+ if (targetDataField.$Type === UIAnnotationTypes.FieldGroupType) {
1969
+ return ((targetDataField as unknown) as FieldGroupType).Data.some((dataField: DataFieldAbstractTypes) => {
1970
+ return (
1971
+ dataField.$Type !== UIAnnotationTypes.DataFieldForAnnotation &&
1972
+ ((dataField as unknown) as DataFieldTypes).Value &&
1973
+ ((dataField as unknown) as DataFieldTypes).Value.path &&
1974
+ semanticKeys.find(semanticKey => semanticKey.value === ((dataField as unknown) as DataFieldTypes).Value.path)
1975
+ );
1976
+ })
1977
+ ? Importance.High
1978
+ : Importance.None;
1979
+ }
1980
+ }
1981
+
1982
+ //If current field is a semanticKey, importance set to High
1983
+ return semanticKeys.find(semanticKey => semanticKey.value === (lineItem as DataFieldTypes).Value?.path)
1984
+ ? Importance.High
1985
+ : Importance.None;
1986
+ }
1987
+
1898
1988
  /**
1899
1989
  * Returns line items from metadata annotations.
1900
1990
  *
@@ -1914,7 +2004,7 @@ const getColumnsFromAnnotations = function(
1914
2004
  nonSortableColumns: string[] = getNonSortablePropertiesRestrictions(converterContext.getEntitySet()),
1915
2005
  tableManifestSettings: TableManifestConfiguration = converterContext.getManifestControlConfiguration(visualizationPath),
1916
2006
  tableType: TableType = tableManifestSettings?.tableSettings?.type || "ResponsiveTable";
1917
- const semanticKeys = converterContext.getAnnotationsByTerm("Common", "com.sap.vocabularies.Common.v1.SemanticKey", [
2007
+ const semanticKeys: SemanticKey = converterContext.getAnnotationsByTerm("Common", "com.sap.vocabularies.Common.v1.SemanticKey", [
1918
2008
  converterContext.getEntityType()
1919
2009
  ])[0];
1920
2010
  if (lineItemAnnotation) {
@@ -1952,7 +2042,7 @@ const getColumnsFromAnnotations = function(
1952
2042
  ) {
1953
2043
  fieldGroupHiddenExpressions = _getFieldGroupHiddenExpressions(lineItem, formatOptions);
1954
2044
  }
1955
- const exportSettings = {
2045
+ const exportSettings: any = {
1956
2046
  template: relatedPropertiesInfo.exportSettingsTemplate,
1957
2047
  wrap: relatedPropertiesInfo.exportSettingsWrapping,
1958
2048
  type: dataType ? _getExportDataType(dataType, relatedPropertyNames.length > 1) : undefined,
@@ -1961,6 +2051,13 @@ const getColumnsFromAnnotations = function(
1961
2051
  trueValue: dataType === "Edm.Boolean" ? "Yes" : undefined,
1962
2052
  falseValue: dataType === "Edm.Boolean" ? "No" : undefined
1963
2053
  };
2054
+
2055
+ if (relatedPropertiesInfo.exportUnitName) {
2056
+ exportSettings.unitProperty = relatedPropertiesInfo.exportUnitName;
2057
+ exportSettings.type = "Currency"; // Force to a currency because there's a unitProperty (otherwise the value isn't properly formatted when exported)
2058
+ } else if (relatedPropertiesInfo.exportUnitString) {
2059
+ exportSettings.unit = relatedPropertiesInfo.exportUnitString;
2060
+ }
1964
2061
  const propertyTypeConfig = dataType && getTypeConfig(lineItem, dataType);
1965
2062
  const oTypeConfig = propertyTypeConfig
1966
2063
  ? {
@@ -1977,7 +2074,7 @@ const getColumnsFromAnnotations = function(
1977
2074
  // In case of text arrangement annotation with display mode as text only, exclude text property from the width calculation
1978
2075
  visualSettings = {
1979
2076
  widthCalculation: {
1980
- excludeProperties: "Property::" + relatedPropertiesInfo.visualSettingsToBeExcluded
2077
+ excludeProperties: ["Property::" + relatedPropertiesInfo.visualSettingsToBeExcluded]
1981
2078
  }
1982
2079
  };
1983
2080
  } else if (!dataType || !oTypeConfig) {
@@ -2015,6 +2112,7 @@ const getColumnsFromAnnotations = function(
2015
2112
  additionalPropertyInfos: additionalPropertyNames.length > 0 ? additionalPropertyNames : undefined,
2016
2113
  exportSettings: exportSettings,
2017
2114
  width: lineItem.annotations?.HTML5?.CssDefaults?.width || widthOverride || undefined,
2115
+ importance: _getAnnotationImportance(lineItem, semanticKeys),
2018
2116
  isNavigable: true,
2019
2117
  formatOptions: formatOptions,
2020
2118
  exportContactProperty: relatedPropertiesInfo.exportSettingsContactProperty,
@@ -2158,7 +2256,7 @@ const getColumnsFromManifest = function(
2158
2256
  converterContext,
2159
2257
  entityType
2160
2258
  );
2161
- if (!manifestColumn?.template && !isAnnotationColumn) {
2259
+ if (!manifestColumn?.template && manifestColumn?.type !== "Slot" && !isAnnotationColumn) {
2162
2260
  const Message = "The annotation column '" + key + "' referenced in the manifest is not found";
2163
2261
  converterContext
2164
2262
  .getDiagnostics()
@@ -2176,6 +2274,7 @@ const getColumnsFromManifest = function(
2176
2274
  name: "CustomColumn::" + key,
2177
2275
  header: manifestColumn.header,
2178
2276
  width: manifestColumn.width || undefined,
2277
+ importance: _getManifestOrDefaultValue(manifestColumn?.importance, Importance.None, isAnnotationColumn),
2179
2278
  horizontalAlign: _getManifestOrDefaultValue(manifestColumn?.horizontalAlign, HorizontalAlign.Begin, isAnnotationColumn),
2180
2279
  type: manifestColumn.type === "Slot" ? ColumnType.Slot : ColumnType.Default,
2181
2280
  availability: _getManifestOrDefaultValue(manifestColumn?.availability, AvailabilityType.Default, isAnnotationColumn),
@@ -2188,10 +2287,14 @@ const getColumnsFromManifest = function(
2188
2287
  settings: manifestColumn.settings,
2189
2288
  sortable: false,
2190
2289
  propertyInfos: propertyInfos,
2191
- formatOptions: {
2192
- ...getDefaultFormatOptionsForTable(),
2193
- ...manifestColumn.formatOptions
2194
- },
2290
+ formatOptions: _getManifestOrDefaultValue(
2291
+ manifestColumn.formatOptions,
2292
+ {
2293
+ ...getDefaultFormatOptionsForTable(),
2294
+ ...manifestColumn.formatOptions
2295
+ },
2296
+ isAnnotationColumn
2297
+ ),
2195
2298
  exportSettings: {
2196
2299
  template: propertyInfos ? _appendCustomTemplate(propertyInfos) : undefined,
2197
2300
  fieldLabel: propertyInfos ? manifestColumn.header : undefined,
@@ -2407,9 +2510,10 @@ export function getTableAnnotationConfiguration(
2407
2510
  const targetCapabilities = getCapabilityRestriction(converterContext);
2408
2511
  const navigationTargetPath = getNavigationTargetPath(converterContext, navigationPropertyPath);
2409
2512
  const navigationSettings = pageManifestSettings.getNavigationConfiguration(navigationTargetPath);
2513
+ const creationBehaviour = _getCreationBehaviour(lineItemAnnotation, tableManifestConfiguration, converterContext, navigationSettings);
2410
2514
  const standardActionsContext = generateStandardActionsContext(
2411
2515
  converterContext,
2412
- navigationSettings,
2516
+ creationBehaviour.mode as CreationMode,
2413
2517
  tableManifestConfiguration,
2414
2518
  viewConfiguration
2415
2519
  );
@@ -2437,14 +2541,14 @@ export function getTableAnnotationConfiguration(
2437
2541
  threshold = presentationVariantAnnotation.MaxItems.valueOf() as number;
2438
2542
  }
2439
2543
 
2440
- const creationBehaviour = _getCreationBehaviour(lineItemAnnotation, tableManifestConfiguration, converterContext, navigationSettings);
2441
2544
  const variantManagement: VariantManagementType = pageManifestSettings.getVariantManagement();
2442
2545
  const isSearchable = isPathSearchable(converterContext.getDataModelObjectPath());
2443
2546
  const standardActions = {
2444
2547
  create: getStandardActionCreate(converterContext, standardActionsContext),
2445
2548
  "delete": getStandardActionDelete(converterContext, standardActionsContext),
2446
2549
  paste: getStandardActionPaste(converterContext, standardActionsContext, isInsertUpdateTemplated),
2447
- massEdit: getStandardActionMassEdit(converterContext, standardActionsContext)
2550
+ massEdit: getStandardActionMassEdit(converterContext, standardActionsContext),
2551
+ creationRow: getCreationRow(converterContext, standardActionsContext)
2448
2552
  };
2449
2553
 
2450
2554
  return {
@@ -2615,6 +2719,7 @@ function _getTableType(
2615
2719
  }
2616
2720
  return tableType;
2617
2721
  }
2722
+
2618
2723
  function _getFilters(
2619
2724
  tableSettings: TableManifestSettingsConfiguration,
2620
2725
  quickFilterPaths: { annotationPath: string }[],