@sapui5/sap.suite.ui.generic.template 1.120.33 → 1.120.35

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 (26) hide show
  1. package/package.json +4 -3
  2. package/src/sap/suite/ui/generic/template/.library +1 -1
  3. package/src/sap/suite/ui/generic/template/AnalyticalListPage/controller/ControllerImplementation.js +2 -2
  4. package/src/sap/suite/ui/generic/template/AnalyticalListPage/manifest.json +1 -1
  5. package/src/sap/suite/ui/generic/template/Canvas/manifest.json +1 -1
  6. package/src/sap/suite/ui/generic/template/ListReport/controller/ControllerImplementation.js +2 -2
  7. package/src/sap/suite/ui/generic/template/ListReport/controller/IappStateHandler.js +34 -33
  8. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_pt.properties +1 -1
  9. package/src/sap/suite/ui/generic/template/ListReport/manifest.json +1 -1
  10. package/src/sap/suite/ui/generic/template/ObjectPage/controller/RelatedAppsHandler.js +16 -8
  11. package/src/sap/suite/ui/generic/template/ObjectPage/controller/SectionTitleHandler.js +1 -1
  12. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_pt.properties +1 -1
  13. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_vi.properties +2 -2
  14. package/src/sap/suite/ui/generic/template/ObjectPage/manifest.json +1 -1
  15. package/src/sap/suite/ui/generic/template/ObjectPage/templateSpecificPreparationHelper.js +108 -1
  16. package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/Facet.fragment.xml +15 -11
  17. package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/SmartForm.fragment.xml +1 -1
  18. package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/SmartTable.fragment.xml +7 -11
  19. package/src/sap/suite/ui/generic/template/QuickCreate/manifest.json +1 -1
  20. package/src/sap/suite/ui/generic/template/QuickView/manifest.json +1 -1
  21. package/src/sap/suite/ui/generic/template/js/AnnotationHelper.js +79 -1
  22. package/src/sap/suite/ui/generic/template/lib/AppComponent.js +1 -1
  23. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_da.properties +1 -1
  24. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pt.properties +1 -1
  25. package/src/sap/suite/ui/generic/template/lib/navigation/NavigationController.js +1 -1
  26. package/src/sap/suite/ui/generic/template/library.js +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.suite.ui.generic.template",
3
- "version": "1.120.33",
3
+ "version": "1.120.35",
4
4
  "description": "SAPUI5 Library sap.suite.ui.generic.template",
5
5
  "keywords": [
6
6
  "sapui5",
@@ -16,6 +16,7 @@
16
16
  "testsuite-qunit" : "ui5 serve --config ./ui5-local.yaml --open \"/test-resources/sap/suite/ui/generic/template/qunit/testsuite.qunit.html\""
17
17
  },
18
18
  "devDependencies": {
19
- "sonarqube-scanner": "3.5.0"
19
+ "sonarqube-scanner": "3.5.0",
20
+ "@sap/ux-ui5-tooling": "latest"
20
21
  }
21
- }
22
+ }
@@ -7,7 +7,7 @@
7
7
 
8
8
  (c) Copyright 2009-2015 SAP SE. All rights reserved
9
9
  </copyright>
10
- <version>1.120.33</version>
10
+ <version>1.120.35</version>
11
11
 
12
12
  <documentation>Library with generic Suite UI templates.</documentation>
13
13
 
@@ -258,12 +258,12 @@ sap.ui.define(["sap/fe/navigation/SelectionVariant",
258
258
  var sEntityTypeName = oMetaModel.getODataEntitySet(oPresentationControlHandler.getEntitySet()).entityType;
259
259
  var oTable = oState.oSmartTable.getTable();
260
260
  var oBinding = oTable.getBinding("rows") || oTable.getBinding("items");
261
- var sServiceUrl = oBinding && oBinding.getDownloadUrl();
261
+ var sServiceUrl = oBinding ? oBinding.getDownloadUrl() : "";
262
262
  // - For Analytical Binding.
263
263
  // we recv. aApplicationFilter and aApplicationFilters binding both but aApplicationFilter have actual filters operator value.
264
264
  // - For List Binding.
265
265
  // we recv. only aApplicationFilters contains filter operator.
266
- var aFilters = oBinding.aApplicationFilter || oBinding.aApplicationFilters;
266
+ var aFilters = oBinding ? (oBinding.aApplicationFilter || oBinding.aApplicationFilters) : [];
267
267
  // non-draft case when no filter is applied
268
268
  if (!aFilters.length) {
269
269
  return Promise.resolve({
@@ -8,7 +8,7 @@
8
8
  "i18n": "i18n/i18n.properties",
9
9
  "applicationVersion": {
10
10
  "__comment": "applicationVersion oder componentversion??",
11
- "version": "1.120.33"
11
+ "version": "1.120.35"
12
12
  },
13
13
  "title": "{{TITLE}}",
14
14
  "description": "{{DESCRIPTION}}",
@@ -8,7 +8,7 @@
8
8
  "i18n": "i18n/i18n.properties",
9
9
  "applicationVersion": {
10
10
  "__comment": "applicationVersion oder componentversion??",
11
- "version": "1.120.33"
11
+ "version": "1.120.35"
12
12
  },
13
13
  "title": "Canvas",
14
14
  "description": "Canvas Page",
@@ -306,12 +306,12 @@ sap.ui.define([
306
306
  var oMetaModel = oPresentationControlHandler.getModel().getMetaModel();
307
307
  var sEntityTypeName = oMetaModel.getODataEntitySet(oPresentationControlHandler.getEntitySet()).entityType;
308
308
  var oBinding = oPresentationControlHandler.getBinding(oState);
309
- var sServiceUrl = oBinding.getDownloadUrl();
309
+ var sServiceUrl = oBinding ? oBinding.getDownloadUrl() : "";
310
310
  // - For Analytical Binding.
311
311
  // we recv. aApplicationFilter and aApplicationFilters binding both but aApplicationFilter have actual filters operator value.
312
312
  // - For List Binding.
313
313
  // we recv. only aApplicationFilters contains filter operator.
314
- var aFilters = oBinding.aApplicationFilter || oBinding.aApplicationFilters;
314
+ var aFilters = oBinding ? (oBinding.aApplicationFilter || oBinding.aApplicationFilters) : [];
315
315
  // non-draft case when no filter is applied
316
316
  if (!aFilters.length) {
317
317
  return Promise.resolve({
@@ -79,12 +79,12 @@ sap.ui.define([
79
79
  var aPageVariantControlStateWrappers = []; // controls handled from page variant management if used: smartTable, searchfield, partly multiple views
80
80
 
81
81
  // SmartTable state: Table Settings and (in case of control level variant management) selected variant and whether it's dirty
82
- // In case of multipleViews with multiple tables (mode "multi"), each tab has an own table or chart, which has an own state, so multipleViewsHandler has to take care of
82
+ // In case of multipleViews with multiple tables (mode "multi"), each tab has an own table or chart, which has an own state, so multipleViewsHandler has to take care of
83
83
  // storing/restoring their states (in its part of the appState stored in genericData.tableTabData)
84
- // In this case, mutliViewsHandler exchanges oState.oPresentationControlHandler (setting it always to the current visible one), so don't rely on that to get the wrapper.
84
+ // In this case, mutliViewsHandler exchanges oState.oPresentationControlHandler (setting it always to the current visible one), so don't rely on that to get the wrapper.
85
85
  // Using the id (without providing optional parameter sQuickVariantKey) returns the smartTable only in single table case.
86
86
  var oSmartTable = oController.byId(StableIdHelper.getStableId({type: "ListReportTable", subType: "SmartTable"}));
87
- if (oSmartTable){ // in multipleViews case (with multiple tables) currently multipleViews handler handles complete state information
87
+ if (oSmartTable){ // in multipleViews case (with multiple tables) currently multipleViews handler handles complete state information
88
88
  aControlStateWrappers.push(oTemplateUtils.oCommonUtils.getControlStateWrapper(oSmartTable));
89
89
  }
90
90
 
@@ -123,7 +123,7 @@ sap.ui.define([
123
123
 
124
124
  // List of handlers to react on (app or adaptation) extension state changes. Only one entry expected (handler in SFB wrapper). Currently, extensions are only possible in
125
125
  // SFB - if extensions at other places are needed, the similar handler might differ depending on whether page variant management is used.
126
- var aExtensionStateChangeHandlers = [];
126
+ var aExtensionStateChangeHandlers = [];
127
127
  function customAppStateChange() {
128
128
  aExtensionStateChangeHandlers.forEach(function(fnHandler) {
129
129
  fnHandler();
@@ -234,7 +234,7 @@ sap.ui.define([
234
234
 
235
235
 
236
236
  // Wrapper to control whether data is loaded
237
-
237
+
238
238
  function fnGetDataLoadedWrapper(){
239
239
  // Wrapper to control whether data is expected to be loaded - controls the state, but does not trigger loading data on restore!
240
240
  var oTemplatePrivateModel = oTemplateUtils.oComponentUtils.getTemplatePrivateModel();
@@ -242,15 +242,15 @@ sap.ui.define([
242
242
  // - startup with iAppState: anyway setState will be called
243
243
  // - other startup cases: applyInitialLoadBehavior calls setState explicitly
244
244
  // - navigation
245
-
245
+
246
246
  function fnSetState(bState){
247
247
  oTemplatePrivateModel.setProperty("/generic/bDataAreShownInTable", bState);
248
248
  }
249
-
249
+
250
250
  function fnGetState(){
251
251
  return oTemplatePrivateModel.getProperty("/generic/bDataAreShownInTable");
252
252
  }
253
-
253
+
254
254
  function fnSetDataShown(bDataShown, fnHandler){
255
255
  if (bDataShown === fnGetState()){
256
256
  return;
@@ -258,7 +258,7 @@ sap.ui.define([
258
258
  fnSetState(bDataShown);
259
259
  fnHandler();
260
260
  }
261
-
261
+
262
262
  return {
263
263
  getLocalId: function(){
264
264
  return "$dataLoaded";
@@ -266,7 +266,7 @@ sap.ui.define([
266
266
  setState: fnSetState,
267
267
  getState: fnGetState,
268
268
  attachStateChanged: function(fnHandler){
269
- // changing from data not loaded to data loaded:
269
+ // changing from data not loaded to data loaded:
270
270
  // - when SFB triggers search
271
271
  oState.oSmartFilterbar.attachSearch(fnSetDataShown.bind(null, true, fnHandler));
272
272
 
@@ -281,7 +281,7 @@ sap.ui.define([
281
281
  }
282
282
  };
283
283
  }
284
-
284
+
285
285
  var oDataLoadedWrapper = fnGetDataLoadedWrapper();
286
286
  aControlStateWrappers.push(oDataLoadedWrapper);
287
287
  // oDataLoadedWrapper.attachStateChanged(changeIappState);
@@ -390,7 +390,7 @@ sap.ui.define([
390
390
  if (Device.system.phone) {
391
391
  collapseHeader();
392
392
  }
393
- // Ideally, oDataLoadedWrapper should ensure to keep its state correct. However, currently we have no means to attach to the command - i.e. oDataLoadedWrapper only
393
+ // Ideally, oDataLoadedWrapper should ensure to keep its state correct. However, currently we have no means to attach to the command - i.e. oDataLoadedWrapper only
394
394
  // attaches to SFB's search event, which is only triggered when user presses the go button. When keyboard shortcut is used instead, this handler would be called (as it
395
395
  // is attached to the command), but SFB's search event would not be triggered. As workaround, we additionally set data loaded state to true here and inform explicitly
396
396
  // the the state has changed.
@@ -434,7 +434,7 @@ sap.ui.define([
434
434
  }
435
435
  }
436
436
  }
437
-
437
+
438
438
  /*
439
439
  This method is called when an LR app is the target of an external navigation and the XAppState data contains a presentationVariant.
440
440
  The sorting from this presentationVariant is then applied to the table.
@@ -454,13 +454,13 @@ sap.ui.define([
454
454
  fnAdaptOtherControlsToAppState(oAppData.controlStates);
455
455
  if (areDataShownInTable()){
456
456
  // fnAdaptOtherControlsToAppState only (synchronously) sets the state including the information whether data should be loaded - if this is the case, the actual loading
457
- // (which happens asynchronous of course) still needs to be triggered
457
+ // (which happens asynchronous of course) still needs to be triggered
458
458
  loadData();
459
459
  } else {
460
460
  // hide placeholder already here, if no data is to be loaded - in case data is loaded, it will be hidden in data received event
461
461
  oTemplateUtils.oComponentUtils.hidePlaceholder();
462
- }
463
-
462
+ }
463
+
464
464
  // special case: when restoring an old app state with data loaded, but in the meantime a filter not set in that state has been changed to mandatory, SFB.search would not
465
465
  // trigger a request (but instead only mark that filter) - thus hiding placeholder now to avoid it to stay forever
466
466
  // TODO: refactor: Still in that case our internal data shows data are loaded - ideally, that should not be the case
@@ -597,7 +597,7 @@ sap.ui.define([
597
597
 
598
598
  function fnAdaptToAppStateStartUpWithParameters(oAppData, oURLParameters, sPreferredQuickVariantSelectionKey){
599
599
  handleVariantIdPassedViaURLParams(oURLParameters);
600
-
600
+
601
601
  var oSFBUiState = oState.oSmartFilterbar.getUiState();
602
602
  var oSFBSemanticDates = oSFBUiState.getSemanticDates();
603
603
  //oStartupObject to be passed to the extension where urlParameters and selectedQuickVariantSelectionKey are optional
@@ -760,23 +760,24 @@ sap.ui.define([
760
760
  default:
761
761
  throw new FeError(sClassName, "Invalid navigation type: " + sNavType);
762
762
  }
763
-
763
+
764
764
  // common to all startup cases (except iAppState)
765
765
  if (areDataShownInTable()){
766
766
  // trigger search if needed
767
767
  oState.oSmartFilterbar.search();
768
- // For desktop devices, expand the header for Standard and Custom variants and for tablet and mobile devices,
768
+ // For desktop devices, expand the header for Standard and Custom variants and for tablet and mobile devices,
769
769
  // collapse the header only if search is triggered.
770
770
  if (Device.system.desktop) {
771
771
  oTemplateUtils.oCommonUtils.getControlStateWrapper(oController.byId(StableIdHelper.getStableId({type: "ListReportPage", subType: "DynamicPage"}))).setHeaderState(oController, true);
772
772
  } else {
773
773
  collapseHeader();
774
774
  }
775
- } else {
776
- // if no data are loaded, place holder has to be hidden now - otherwise it will be hidden when data is received
775
+ }
776
+ if (!areDataShownInTable() || Object.keys(oState.oSmartFilterbar.verifySearchAllowed()).length > 0) {
777
+ // if no data are loaded or search is not allowed, place holder has to be hidden now - otherwise it will be hidden when data is received
777
778
  oTemplateUtils.oComponentUtils.hidePlaceholder();
778
779
  }
779
-
780
+
780
781
  // ensure first iAppState is created
781
782
  changeIappState();
782
783
  }
@@ -977,14 +978,14 @@ sap.ui.define([
977
978
  }
978
979
 
979
980
  // provide data load settings including defaulting
980
- // ideally, this should be implemented in a generic way in template assembler, so that generated getters also return default values for objects if not explicitely set in
981
+ // ideally, this should be implemented in a generic way in template assembler, so that generated getters also return default values for objects if not explicitely set in
981
982
  // manifest (i.e. it should be sufficient to define the default in component - no need to individually implement defaulting!)
982
983
  function getDataLoadSettings(){
983
984
  // general default
984
985
  var oDefaultDataLoadSettings = {loadDataOnAppLaunch: "ifAnyFilterExist"};
985
986
 
986
987
  // intension is boolean, but unfortunately faulty values are (historically) not treated consistently
987
- var bEnableAutoBindingMultiViews = oState.oMultipleViewsHandler.getOriginalEnableAutoBinding();
988
+ var bEnableAutoBindingMultiViews = oState.oMultipleViewsHandler.getOriginalEnableAutoBinding();
988
989
 
989
990
  // if multiple views settings is not defined (also the case in single views case), general default is taken. Unlike other faulty values, null is treated like undefined
990
991
  if (bEnableAutoBindingMultiViews !== undefined && bEnableAutoBindingMultiViews !== null){
@@ -994,13 +995,13 @@ sap.ui.define([
994
995
 
995
996
  var oManifestDataLoadSettings = oController.getOwnerComponent().getDataLoadSettings();
996
997
  // (historically) explicit setting empty string (not an allowed value according to definition in component!) is treated like undefined (including adopting multiple views
997
- // settings. Other not allowed values (any other sting) were ignored, i.e. returning undefined from getInitialLoadBehaviourSettings, thus setting undefined to
998
- // oSmartVariantManagement.setExecuteOnStandard (which actually only sets the default) and finally using the value returned from
998
+ // settings. Other not allowed values (any other sting) were ignored, i.e. returning undefined from getInitialLoadBehaviourSettings, thus setting undefined to
999
+ // oSmartVariantManagement.setExecuteOnStandard (which actually only sets the default) and finally using the value returned from
999
1000
  // oSmartVariantManagement.getExecuteOnStandard (only different from overall default (false), if user has explicitly set it)
1000
1001
  if (oManifestDataLoadSettings && oManifestDataLoadSettings.loadDataOnAppLaunch === ""){
1001
1002
  oManifestDataLoadSettings.loadDataOnAppLaunch = undefined;
1002
1003
  }
1003
-
1004
+
1004
1005
  // explicit setting has highest priority
1005
1006
  return extend(oDefaultDataLoadSettings, oManifestDataLoadSettings);
1006
1007
  }
@@ -1009,7 +1010,7 @@ sap.ui.define([
1009
1010
  // - sets default value for flag whether standard variant should be execute on select
1010
1011
  // - determines whether we actually should load data
1011
1012
  function applyInitialLoadBehavior(bDataLoadCausedByNavigation){
1012
- // cases definitely determining to load data initially
1013
+ // cases definitely determining to load data initially
1013
1014
  // - worklist
1014
1015
  // - livemode
1015
1016
  // - master detail (i.e. bLoadListAndFirstEntryOnStartup is set)
@@ -1018,17 +1019,17 @@ sap.ui.define([
1018
1019
 
1019
1020
  var sLoadBehaviour = getDataLoadSettings().loadDataOnAppLaunch;
1020
1021
  if (!oSmartVariantManagement || oController.getOwnerComponent().getVariantManagementHidden()){
1021
- // No VM ->
1022
+ // No VM ->
1022
1023
  bShouldDataBeLoaded = bShouldDataBeLoaded || sLoadBehaviour === "always";
1023
1024
  bShouldDataBeLoaded = bShouldDataBeLoaded || (sLoadBehaviour === "ifAnyFilterExist" && oSmartFilterbar.getFiltersWithValues().length > 0);
1024
1025
  // behavior of last patch set would translate to the following - seems not to be correct (in case of setting ifAnyFilterExist but no filters provided)
1025
1026
  // bShouldDataBeLoaded = bShouldDataBeLoaded || sLoadBehaviour !== "never";
1026
1027
  } else {
1027
- // in case of a (visible) SVM, we need to set the default value
1028
- // default value for standard variant
1028
+ // in case of a (visible) SVM, we need to set the default value
1029
+ // default value for standard variant
1029
1030
  // - true if one of the conditions above is fulfilled
1030
- // - or for any manifest setting but "never"
1031
- // (Remark: "ifAnyFilterExist" leads to mark the standard variant true, even if no filter is provided - this looks ok for startup, as the text shown to the user
1031
+ // - or for any manifest setting but "never"
1032
+ // (Remark: "ifAnyFilterExist" leads to mark the standard variant true, even if no filter is provided - this looks ok for startup, as the text shown to the user
1032
1033
  // contains the condition, but if reselecting the standard variant, it will also select without filters!
1033
1034
  // TODO: check, how to solve that inconsistency)
1034
1035
  // - but in both cases not, if a mandatory filter is missing
@@ -41,7 +41,7 @@ MESSAGE_SINGLE_VALUE_L_FORM=O filtro "{0}" n\u00E3o \u00E9 relevante para a fich
41
41
 
42
42
  MESSAGE_SINGLE_VALUE_S_FORM=N\u00E3o \u00E9 poss\u00EDvel filtrar por "{0}" na ficha "{1}".
43
43
 
44
- MULTI_EDIT=Processar
44
+ MULTI_EDIT=Editar
45
45
 
46
46
  MULTI_EDIT_DIALOG_TITLE=Editar ({0})
47
47
 
@@ -8,7 +8,7 @@
8
8
  "i18n": "i18n/i18n.properties",
9
9
  "applicationVersion": {
10
10
  "__comment": "applicationVersion oder componentversion??",
11
- "version": "1.120.33"
11
+ "version": "1.120.35"
12
12
  },
13
13
  "title": "{{TITLE}}",
14
14
  "description": "{{DESCRIPTION}}",
@@ -89,18 +89,26 @@ sap.ui.define([
89
89
 
90
90
  var oLinksDeferred;
91
91
  var bHasRelatedAppSettings = oRelatedAppsSettings && Object.keys(oRelatedAppsSettings).length > 0;
92
+
92
93
  if (bHasRelatedAppSettings) {
93
- var aSemanticObjects = [[{
94
- semanticObject: sCurrentSemObj
95
- }]];
94
+ const oSemanticObjectSet = new Set();
95
+ // Add the current semantic object into the set
96
+ oSemanticObjectSet.add(sCurrentSemObj);
96
97
 
97
- for (var sKey in oRelatedAppsSettings) {
98
- if (sKey) {
99
- aSemanticObjects.push([{
100
- semanticObject: oRelatedAppsSettings[sKey].semanticObject
101
- }]);
98
+ // Iterate through oRelatedAppSettings and add all related apps into the set
99
+ for (const sKey in oRelatedAppsSettings) {
100
+ if (sKey && oRelatedAppsSettings.hasOwnProperty(sKey)) {
101
+ const sSemanticObject = oRelatedAppsSettings[sKey].semanticObject;
102
+ oSemanticObjectSet.add(sSemanticObject); // Set will handle duplicates
102
103
  }
103
104
  }
105
+ // Create an array from the set
106
+ let aSemanticObjects = Array.from(oSemanticObjectSet);
107
+
108
+ // Use the map method to convert the array of strings into an array of objects
109
+ aSemanticObjects = aSemanticObjects.map(sSemObj => ([{ semanticObject: sSemObj }]));
110
+
111
+ // aSemanticObjects now contains the desired format
104
112
  oLinksDeferred = oXApplNavigation.getLinks(aSemanticObjects);
105
113
  } else {
106
114
  var oAppComponent = oController.getOwnerComponent().getAppComponent();
@@ -25,7 +25,7 @@ sap.ui.define([
25
25
  return accBlock;
26
26
  }, [])
27
27
  .forEach(function(entry) {
28
- if (!oSubSectionInfoObject) {
28
+ if (!oSubSectionInfoObject || (entry.getGroups().length === 1 && entry.getGroups()[0].getTitle && !entry.getGroups()[0].getTitle())) {
29
29
  // Case: header is editable. manifest.json, editableHeaderContent=true
30
30
  var sInvisibleTextID = `${entry.getId()}-ariaLabelBy-InvisibleText`,
31
31
  oInvisibleText = Element.getElementById(sInvisibleTextID);
@@ -142,7 +142,7 @@ CREATE_DIALOG_TITLE=Item novo
142
142
 
143
143
  DELETE_WITH_OBJECTINFO=Eliminar este objeto ({1} {2})?
144
144
 
145
- DELETE_WITH_OBJECTTITLE=Eliminar objeto {0}?
145
+ DELETE_WITH_OBJECTTITLE=Excluir objeto {0}?
146
146
 
147
147
  SHOW_SIDE_CONTENT=Exibir detalhes
148
148
 
@@ -182,8 +182,8 @@ ENTER_MANDATORY=Nh\u00E2\u0323p gia\u0301 tri\u0323 cho tr\u01B0\u01A1\u0300ng {
182
182
 
183
183
  REQUIRED_PROP_ERROR=Nh\u1EADp gi\u00E1 tr\u1ECB.
184
184
 
185
- REQUIRED_PROP_COLUMN_HIDDEN_ERROR=Ba\u0309ng ch\u01B0\u0301a l\u00F4\u0303i. {0} la\u0300 gi\u00E1 tr\u1ECB b\u0103\u0301t bu\u00F4\u0323c nh\u01B0ng kh\u00F4ng \u0111\u01B0\u01A1\u0323c hi\u00EA\u0309n thi\u0323 trong ba\u0309ng. Vui lo\u0300ng th\u00EAm gi\u00E1 tr\u1ECB trong thi\u00EA\u0301t l\u00E2\u0323p ba\u0309ng.
186
- REQUIRED_PROP_COLUMN_HIDDEN_ERROR_PLURAL=Ba\u0309ng ch\u01B0\u0301a l\u00F4\u0303i. {0} la\u0300 gi\u00E1 tr\u1ECB b\u0103\u0301t bu\u00F4\u0323c nh\u01B0ng kh\u00F4ng \u0111\u01B0\u01A1\u0323c hi\u00EA\u0309n thi\u0323 trong ba\u0309ng. Vui lo\u0300ng th\u00EAm gi\u00E1 tr\u1ECB trong thi\u00EA\u0301t l\u00E2\u0323p ba\u0309ng.
185
+ REQUIRED_PROP_COLUMN_HIDDEN_ERROR=Ba\u0309ng ch\u01B0\u0301a l\u00F4\u0303i. {0} la\u0300 gi\u00E1 tr\u1ECB b\u0103\u0301t bu\u00F4\u0323c nh\u01B0ng kh\u00F4ng \u0111\u01B0\u01A1\u0323c hi\u00EA\u0309n thi\u0323 trong ba\u0309ng. Vui lo\u0300ng th\u00EAm gi\u00E1 tr\u1ECB trong thi\u00EA\u0301t l\u00E2\u0323p m\u00E0n h\u00ECnh.
186
+ REQUIRED_PROP_COLUMN_HIDDEN_ERROR_PLURAL=Ba\u0309ng ch\u01B0\u0301a l\u00F4\u0303i. {0} la\u0300 gi\u00E1 tr\u1ECB b\u0103\u0301t bu\u00F4\u0323c nh\u01B0ng kh\u00F4ng \u0111\u01B0\u01A1\u0323c hi\u00EA\u0309n thi\u0323 trong ba\u0309ng. Vui lo\u0300ng th\u00EAm gi\u00E1 tr\u1ECB trong thi\u00EA\u0301t l\u00E2\u0323p m\u00E0n h\u00ECnh.
187
187
 
188
188
  T_PAGINATOR_CONTROL_PAGINATOR_TOOLTIP_UP=Mu\u0323c tr\u01B0\u01A1\u0301c
189
189
 
@@ -6,7 +6,7 @@
6
6
  "type": "component",
7
7
  "i18n": "i18n/i18n.properties",
8
8
  "applicationVersion": {
9
- "version": "1.120.33"
9
+ "version": "1.120.35"
10
10
  },
11
11
  "title": "{{TITLE}}",
12
12
  "description": "{{DESCRIPTION}}",
@@ -159,7 +159,7 @@ sap.ui.define([
159
159
  // Currently, we keep it here, as we use fnNormalizeSections on all levels (-> should be split, targetAnnotation only needed on block level)
160
160
  oBlock.targetAnnotation = fnGetTargetAnnotation(oMetaModel.getContext(sPath + "/" + i));
161
161
  // if facet annotation is inconsistent, targetAnnotation would be undefined. Keep it here anyway, as extension might refer to it
162
-
162
+ fnProcessPresentationVariant(oBlock);
163
163
  var oSubSection;
164
164
 
165
165
  switch (iLevel) {
@@ -201,6 +201,35 @@ sap.ui.define([
201
201
  });
202
202
  return aResult;
203
203
  }
204
+
205
+ function fnProcessPresentationVariant(oBlock) {
206
+ if (!oBlock.annotations.Facet.annotation.Target
207
+ || !oBlock.annotations.Facet.annotation.Target.AnnotationPath
208
+ || oBlock.annotations.Facet.annotation.Target.AnnotationPath.indexOf('com.sap.vocabularies.UI.v1.PresentationVariant') < 0) {
209
+ return;
210
+ }
211
+ // PresentationVariant detected. Try to find LineItem and get it's target annotations
212
+ var sTargetAnnotationTerm = oBlock.annotations.Facet.annotation.Target && oBlock.annotations.Facet.annotation.Target.AnnotationPath && oBlock.annotations.Facet.annotation.Target.AnnotationPath.split("@")[1],
213
+ sEntitySetName = oMetaModel.getObject(AHModel.gotoEntitySet(oMetaModel.getContext(oBlock.metaModelPath + "/Target"))).name,
214
+ oEntitySet = oMetaModel.getODataEntitySet(sEntitySetName),
215
+ oEntityType = oMetaModel.getODataEntityType(oEntitySet.entityType);
216
+ if (!oEntityType[sTargetAnnotationTerm]
217
+ || !oEntityType[sTargetAnnotationTerm].Visualizations
218
+ || !oEntityType[sTargetAnnotationTerm].Visualizations.length
219
+ || !oEntityType[sTargetAnnotationTerm].Visualizations[0]
220
+ || !oEntityType[sTargetAnnotationTerm].Visualizations[0].AnnotationPath
221
+ || oEntityType[sTargetAnnotationTerm].Visualizations[0].AnnotationPath.indexOf('com.sap.vocabularies.UI.v1.LineItem') < 0) {
222
+ return;
223
+ }
224
+ // We have LineItem in Visualizations
225
+ // check if it's exist in Entity annotation and set it's content in oBlock.targetAnnotation for further processing
226
+ var sLineItemAnnotation = oEntityType[sTargetAnnotationTerm].Visualizations[0].AnnotationPath.split("@")[1];
227
+ if (!oEntityType[sLineItemAnnotation]) {
228
+ return;
229
+ }
230
+ oBlock.temporaryData.presentationVariantHasLineItem = true;
231
+ oBlock.targetAnnotation = oEntityType[sLineItemAnnotation];
232
+ }
204
233
 
205
234
  var mTargetEntities = {};
206
235
  function fnSetTargetEntity(oEntitySet, oSettings) {
@@ -233,6 +262,75 @@ sap.ui.define([
233
262
  }
234
263
  }
235
264
 
265
+ /**
266
+ * Retrieve LineItem qualifier for black table.
267
+ * For LineItem - get qualifier from LineItem annotation
268
+ * For PresentationVariant - get LineItem from Visualizations
269
+ * @param {*} oSettings block settings
270
+ * @param {*} sEntitySet current block entity set
271
+ * @returns {string} LineItem qualifier for the table
272
+ */
273
+ function fnGetLineItemQualifier(oSettings, sEntitySet) {
274
+ if (!oSettings.annotations.Facet.annotation.Target
275
+ || !oSettings.annotations.Facet.annotation.Target.AnnotationPath) {
276
+ return "";
277
+ }
278
+ var sLineItem = "";
279
+ if (oSettings.annotations.Facet.annotation.Target.AnnotationPath.indexOf('com.sap.vocabularies.UI.v1.LineItem') >= 0) {
280
+ sLineItem = oSettings.annotations.Facet.annotation.Target.AnnotationPath;
281
+ } else if (oSettings.annotations.Facet.annotation.Target.AnnotationPath.indexOf('com.sap.vocabularies.UI.v1.PresentationVariant') >= 0) {
282
+ var sTargetAnnotationTerm = oSettings.annotations.Facet.annotation.Target.AnnotationPath.split("@")[1],
283
+ oEntitySet = oMetaModel.getODataEntitySet(sEntitySet),
284
+ oEntityType = oMetaModel.getODataEntityType(oEntitySet.entityType);
285
+ if (!oEntityType[sTargetAnnotationTerm]
286
+ || !oEntityType[sTargetAnnotationTerm].Visualizations
287
+ || !oEntityType[sTargetAnnotationTerm].Visualizations.length
288
+ || !oEntityType[sTargetAnnotationTerm].Visualizations[0]
289
+ || !oEntityType[sTargetAnnotationTerm].Visualizations[0].AnnotationPath
290
+ || oEntityType[sTargetAnnotationTerm].Visualizations[0].AnnotationPath.indexOf('com.sap.vocabularies.UI.v1.LineItem') < 0) {
291
+ return "";
292
+ }
293
+ sLineItem = oEntityType[sTargetAnnotationTerm].Visualizations[0].AnnotationPath;
294
+ }
295
+ if (!sLineItem) {
296
+ return "";
297
+ }
298
+ var aLineItemParts = sLineItem.split("#");
299
+ if (aLineItemParts.length !== 2) {
300
+ return "";
301
+ }
302
+ return aLineItemParts[1];
303
+ }
304
+
305
+ /**
306
+ * Retrieve sort order information for specific table
307
+ * @param {*} oSettings block settings
308
+ * @param {*} sEntitySet current block entity set
309
+ * @returns {string} sort order information from com.sap.vocabularies.UI.v1.PresentationVariant
310
+ */
311
+ function fnGetLineItemSortOrder(oSettings, sEntitySet) {
312
+ if (!oSettings.annotations.Facet.annotation.Target
313
+ || !oSettings.annotations.Facet.annotation.Target.AnnotationPath) {
314
+ return "";
315
+ }
316
+ // Default PresentationVariant to use to get sorting information
317
+ var sPresentationVariant = "com.sap.vocabularies.UI.v1.PresentationVariant";
318
+ if (oSettings.annotations.Facet.annotation.Target.AnnotationPath.indexOf('com.sap.vocabularies.UI.v1.PresentationVariant') >= 0) {
319
+ // Override default variant with value from facet
320
+ sPresentationVariant = oSettings.annotations.Facet.annotation.Target.AnnotationPath.split("@")[1];
321
+ }
322
+ var oEntitySet = oMetaModel.getODataEntitySet(sEntitySet),
323
+ oEntityType = oMetaModel.getODataEntityType(oEntitySet.entityType);
324
+ if (!oEntityType[sPresentationVariant]
325
+ || !oEntityType[sPresentationVariant].SortOrder
326
+ || !oEntityType[sPresentationVariant].SortOrder.length
327
+ ) {
328
+ // PresentationVariant is missing in EntityType or there is no sorting order information
329
+ return "";
330
+ }
331
+ return AnnotationHelper.getSortOrder(oEntityType[sPresentationVariant].SortOrder);
332
+ }
333
+
236
334
  function fnGetNormalizedTableSettings(oSettings) {
237
335
  function fnGetTableLevelStandardActions() {
238
336
  /* Collection of standard actions available on OP at table level. Maps the logical action name to an object containing the relevant properties i.e.
@@ -344,6 +442,8 @@ sap.ui.define([
344
442
 
345
443
  oResult.commandExecution = fnGetTableLevelStandardActions();
346
444
  oResult.persistencyKeyState = fnGetPersistencyKeyState(oSettings.tableSettings);
445
+ oResult.lineItemQualifier = fnGetLineItemQualifier(oSettings, sEntitySet);
446
+ oResult.lineItemSortOrder = fnGetLineItemSortOrder(oSettings, sEntitySet);
347
447
 
348
448
  return oResult;
349
449
  }
@@ -777,6 +877,13 @@ sap.ui.define([
777
877
  case "com.sap.vocabularies.UI.v1.LineItem":
778
878
  oBlockData.additionalData.type = "SmartTable";
779
879
  break;
880
+ case "com.sap.vocabularies.UI.v1.PresentationVariant":
881
+ if (oBlockData.temporaryData.presentationVariantHasLineItem) {
882
+ // PresentationVariant have valid LineItem in it. Set block type to SmartTable
883
+ // It will trigger all necessary code for block configuration
884
+ oBlockData.additionalData.type = "SmartTable";
885
+ }
886
+ break;
780
887
  case "com.sap.vocabularies.UI.v1.Chart":
781
888
  oBlockData.additionalData.type = "SmartChart";
782
889
  break;
@@ -16,17 +16,21 @@
16
16
  -->
17
17
  <template:if test="{path: 'facet>Target', formatter: 'AHModel.isMultiple'}">
18
18
  <template:then>
19
- <template:if test="{=${facet>Target/AnnotationPath}.indexOf('com.sap.vocabularies.UI.v1.LineItem') > -1}">
20
- <template:then>
21
- <core:Fragment fragmentName="sap.suite.ui.generic.template.ObjectPage.view.fragments.SmartTable" type="XML"/>
22
- </template:then>
23
- <template:elseif test="{=${facet>Target/AnnotationPath}.indexOf('com.sap.vocabularies.Communication.v1.Contact') > -1}">
24
- <core:Fragment fragmentName="sap.suite.ui.generic.template.fragments.Contacts" type="XML"/>
25
- </template:elseif>
26
- <template:elseif test="{=${facet>Target/AnnotationPath}.indexOf('com.sap.vocabularies.UI.v1.Chart') > -1}">
27
- <core:Fragment fragmentName="sap.suite.ui.generic.template.ObjectPage.view.fragments.SmartChart" type="XML" />
28
- </template:elseif>
29
- </template:if>
19
+ <template:with path="facet>Target" helper="AHModel.gotoEntitySet" var="listEntitySet">
20
+ <template:with path="listEntitySet>entityType" helper="AHModel.gotoEntityType" var="listEntityType">
21
+ <template:if test="{parts:[{path: 'facet>Target/AnnotationPath'}, {path: 'listEntityType>'}], formatter: 'AH.checkFacetHasLineItemAnnotations'}">
22
+ <template:then>
23
+ <core:Fragment fragmentName="sap.suite.ui.generic.template.ObjectPage.view.fragments.SmartTable" type="XML"/>
24
+ </template:then>
25
+ <template:elseif test="{=${facet>Target/AnnotationPath}.indexOf('com.sap.vocabularies.Communication.v1.Contact') > -1}">
26
+ <core:Fragment fragmentName="sap.suite.ui.generic.template.fragments.Contacts" type="XML"/>
27
+ </template:elseif>
28
+ <template:elseif test="{=${facet>Target/AnnotationPath}.indexOf('com.sap.vocabularies.UI.v1.Chart') > -1}">
29
+ <core:Fragment fragmentName="sap.suite.ui.generic.template.ObjectPage.view.fragments.SmartChart" type="XML" />
30
+ </template:elseif>
31
+ </template:if>
32
+ </template:with>
33
+ </template:with>
30
34
  </template:then>
31
35
  <template:elseif test="{= ${facet>RecordType}.indexOf('com.sap.vocabularies.UI.v1.CollectionFacet') > -1 ||
32
36
  (${facet>Target/AnnotationPath}.indexOf('com.sap.vocabularies.UI.v1.FieldGroup') > -1
@@ -21,7 +21,7 @@
21
21
  <core:CustomData key="defaultDropDownDisplayBehaviour" value="descriptionOnly" />
22
22
  <core:CustomData key="defaultTextInEditModeSource" value="ValueListNoValidation" />
23
23
  <core:CustomData key="dateFormatSettings" value='\{"UTC":true,"style":"medium"\}' />
24
- <core:CustomData key="smartFormAriaLabel" value="{parts: [{path: 'facet>'}, {path: 'entitySet>name'}], formatter: 'AH.getSmartFormTitle'}" />
24
+ <core:CustomData key="smartFormAriaLabel" value="{parts: [{path: 'facet>'}, {path: 'entitySet>name'}, {path: 'block>'}, {path: 'subSectionData>'}], formatter: 'AH.getSmartFormTitle'}" />
25
25
  </sfo:customData>
26
26
  <sfo:layout>
27
27
  <template:if test="{= ${appSettings>/useColumnLayoutForSmartForm} !== false}">
@@ -8,7 +8,7 @@
8
8
  <template:with path="facet>Target" var="target">
9
9
  <template:with path="target>" helper="AHModel.gotoEntitySet" var="listEntitySet">
10
10
  <template:with path="listEntitySet>entityType" helper="AHModel.gotoEntityType" var="listEntityType">
11
- <template:with path="target>" helper="AHModel.resolvePath" var="collection">
11
+ <template:with path="target>" helper="AH.getListItemCollection" var="collection">
12
12
  <template:with path="listEntityType>com.sap.vocabularies.UI.v1.HeaderInfo" var="header">
13
13
  <template:with path="parameter>/" helper="sap.suite.ui.generic.template.js.StableIdHelper.preparePathForStableId" var="smartControlId">
14
14
  <template:with path="parameter>/" helper="sap.suite.ui.generic.template.js.StableIdHelper.preparePathForStableId" var="facetId">
@@ -56,18 +56,14 @@
56
56
  <core:CustomData key="useSmartField" value="true" />
57
57
  <core:CustomData key="dateFormatSettings"
58
58
  value='\{"UTC":true,"style":"medium"\}' />
59
- <template:if test="{= ${facet>Target/AnnotationPath}.split('#')[1]}">
59
+ <template:if test="{= ${objectPageTableSettings>value/lineItemQualifier}}">
60
60
  <core:CustomData key="lineItemQualifier"
61
- value="{= ${facet>Target/AnnotationPath}.split('#')[1]}" />
61
+ value="{= ${objectPageTableSettings>value/lineItemQualifier}}" />
62
+ </template:if>
63
+ <template:if test="{= ${objectPageTableSettings>value/lineItemSortOrder}}">
64
+ <core:CustomData key="TemplateSortOrder"
65
+ value="{= ${objectPageTableSettings>value/lineItemSortOrder}}" />
62
66
  </template:if>
63
- <template:with
64
- path="listEntityType>com.sap.vocabularies.UI.v1.PresentationVariant"
65
- var="variant">
66
- <template:if test="{= ${variant>SortOrder}}">
67
- <core:CustomData key="TemplateSortOrder"
68
- value="{path: 'variant>SortOrder', formatter: 'AH.getSortOrder'}" />
69
- </template:if>
70
- </template:with>
71
67
  </st:customData>
72
68
  <st:semanticObjectController>
73
69
  <!-- Fragment SemanticObjectControllerForDataField uses variable 'entitySet to address the entoty set. Currently entitySet points to the entity set of whole OP. Reset pointer to the entity set of the table.-->
@@ -6,7 +6,7 @@
6
6
  "type": "component",
7
7
  "i18n": "i18n/i18n.properties",
8
8
  "applicationVersion": {
9
- "version": "1.120.33"
9
+ "version": "1.120.35"
10
10
  },
11
11
  "title": "{{TITLE}}",
12
12
  "description": "{{DESCRIPTION}}",
@@ -6,7 +6,7 @@
6
6
  "type": "component",
7
7
  "i18n": "i18n/i18n.properties",
8
8
  "applicationVersion": {
9
- "version": "1.120.33"
9
+ "version": "1.120.35"
10
10
  },
11
11
  "title": "{{TITLE}}",
12
12
  "description": "{{DESCRIPTION}}",
@@ -193,6 +193,19 @@ sap.ui.define(["sap/ui/model/odata/AnnotationHelper",
193
193
  }
194
194
  }
195
195
 
196
+ var getLineItemAnnotationFromPresentationVariant = function(oPresentationVariant) {
197
+ if (!oPresentationVariant
198
+ || !oPresentationVariant.Visualizations
199
+ || !oPresentationVariant.Visualizations.length
200
+ || !oPresentationVariant.Visualizations[0].AnnotationPath
201
+ // First entry in Visualizations should be 'com.sap.vocabularies.UI.v1.LineItem'
202
+ || oPresentationVariant.Visualizations[0].AnnotationPath.indexOf('com.sap.vocabularies.UI.v1.LineItem') < 0
203
+ ) {
204
+ return undefined;
205
+ }
206
+ return oPresentationVariant.Visualizations[0].AnnotationPath;
207
+ };
208
+
196
209
  var oAnnotationHelper = {
197
210
  formatMessage: formatMessage,
198
211
  getNewVariable: function (oContext){
@@ -4105,6 +4118,50 @@ sap.ui.define(["sap/ui/model/odata/AnnotationHelper",
4105
4118
  }
4106
4119
  },
4107
4120
 
4121
+ checkFacetHasLineItemAnnotations: function(annotationPath, listEntityType) {
4122
+ if (!annotationPath) {
4123
+ return false;
4124
+ }
4125
+ if (annotationPath.indexOf('com.sap.vocabularies.UI.v1.LineItem') > -1) {
4126
+ return true;
4127
+ }
4128
+ if (annotationPath.indexOf('com.sap.vocabularies.UI.v1.PresentationVariant') > -1) {
4129
+ var aPresentationVariantAnnotations = annotationPath.split("/@");
4130
+ if (aPresentationVariantAnnotations.length < 2) {
4131
+ return false;
4132
+ }
4133
+ if (!listEntityType
4134
+ || !getLineItemAnnotationFromPresentationVariant(listEntityType[aPresentationVariantAnnotations[1]])) {
4135
+ return false;
4136
+ }
4137
+ return true;
4138
+ }
4139
+ return false;
4140
+ },
4141
+
4142
+ getListItemCollection: function(target) {
4143
+ if (!target) {
4144
+ return target;
4145
+ }
4146
+ var oTarget = target.getObject();
4147
+ if (!oTarget || !oTarget.AnnotationPath) {
4148
+ return target;
4149
+ }
4150
+ if (oTarget.AnnotationPath.indexOf('com.sap.vocabularies.UI.v1.LineItem') >= 0) {
4151
+ return AnnotationHelperModel.resolvePath(target);
4152
+ }
4153
+ if (oTarget.AnnotationPath.indexOf('com.sap.vocabularies.UI.v1.PresentationVariant') >= 0) {
4154
+ var oPresentationVariant = target.getProperty(AnnotationHelperModel.resolvePath(target)),
4155
+ sLineItem = getLineItemAnnotationFromPresentationVariant(oPresentationVariant);
4156
+ if (!sLineItem || sLineItem.indexOf('@') !== 0) {
4157
+ return target;
4158
+ }
4159
+ var oEntityType = target.getModel().getODataEntityType(target.getProperty(AnnotationHelperModel.gotoEntitySet(target)).entityType);
4160
+ return oEntityType.$path + "/" + sLineItem.slice(1);
4161
+ }
4162
+ return target;
4163
+ },
4164
+
4108
4165
  getSaveAndNextButtonVisibility: function(oManifest) {
4109
4166
  var sEditFlow = oManifest["sap.ui.generic.app"].pages[0].component.settings && oManifest["sap.ui.generic.app"].pages[0].component.settings.editFlow;
4110
4167
  if (sEditFlow === "direct") {
@@ -4286,10 +4343,31 @@ sap.ui.define(["sap/ui/model/odata/AnnotationHelper",
4286
4343
  };
4287
4344
  },
4288
4345
 
4289
- getSmartFormTitle: function(oInterface, oFacet, sEntitySetName) {
4346
+ getSmartFormTitle: function(oInterface, oFacet, sEntitySetName, oBlock, oSubSectionData) {
4290
4347
  if (!oFacet) {
4348
+ return oAnnotationHelper.getTitleForSectionsForms(oBlock, oSubSectionData);
4349
+ }
4350
+ return oAnnotationHelper.getTitleForHeaderForm(oInterface, oFacet, sEntitySetName);
4351
+ },
4352
+
4353
+ getTitleForSectionsForms: function(oBlock, oSubSectionData) {
4354
+ if (oSubSectionData?.annotations?.Facet?.annotation?.Facets?.length > 1
4355
+ || oSubSectionData?.annotations?.Facet?.annotation?.Label?.String !== oBlock?.aggregations?.groups[0]?.annotations?.Facet?.annotation?.Label?.String
4356
+ ) {
4357
+ // In case Section -> SubSection have more than one form, SmartForm will have it's titles visible
4358
+ // or
4359
+ // SubSectin title !== SmartForm title, SmartForm title will also be visible
4291
4360
  return;
4292
4361
  }
4362
+ if (oBlock?.aggregations?.groups[0]?.annotations?.Facet?.annotation?.Label?.String !== oBlock?.aggregations?.groups[0]?.targetAnnotation?.Label?.String) {
4363
+ // Compare SmartForm title !== FiledGroup title
4364
+ // if they differs -> use FiledGoup title
4365
+ return oBlock?.aggregations?.groups[0]?.targetAnnotation?.Label?.String;
4366
+ }
4367
+ return;
4368
+ },
4369
+
4370
+ getTitleForHeaderForm: function(oInterface, oFacet, sEntitySetName) {
4293
4371
  if (oFacet.Target && oFacet.Target.AnnotationPath && oFacet.Target.AnnotationPath.indexOf("com.sap.vocabularies.UI.v1.DataPoint") > -1) {
4294
4372
  // Process DataPoint case
4295
4373
  var { sAnnotationPath, oEntityType } = oAnnotationHelper.getModelData(oInterface, oFacet.Target.AnnotationPath, sEntitySetName);
@@ -922,7 +922,7 @@ sap.ui.define([
922
922
  * @extends sap.ui.core.UIComponent
923
923
  * @abstract
924
924
  * @author SAP SE
925
- * @version 1.120.33
925
+ * @version 1.120.35
926
926
  * @name sap.suite.ui.generic.template.lib.AppComponent
927
927
  */
928
928
  return UIComponent.extend("sap.suite.ui.generic.template.lib.AppComponent", {
@@ -37,7 +37,7 @@ DATA_LOSS_DISCARD_CHANGES=Kass\u00E9r \u00E6ndringer
37
37
 
38
38
  ST_KEEP_DRAFT_BTN=Behold udkast
39
39
 
40
- ST_DISCARD_DRAFT_BTN=Kass\u00E9r udkast
40
+ ST_DISCARD_DRAFT_BTN=Kasser udkast
41
41
 
42
42
  ST_UNSAVED_CHANGES_TITLE=Ikkegemte \u00E6ndringer
43
43
 
@@ -237,7 +237,7 @@ ST_GENERIC_DELETE_SELECTED=Eliminar este objeto?
237
237
 
238
238
  DELETE_WITH_OBJECTINFO=Eliminar este objeto ({1} {2})?
239
239
 
240
- DELETE_WITH_OBJECTTITLE=Eliminar objeto {0}?
240
+ DELETE_WITH_OBJECTTITLE=Excluir objeto {0}?
241
241
 
242
242
  ST_GENERIC_OBJECT_DELETED=O objeto foi exclu\u00EDdo.
243
243
 
@@ -3089,7 +3089,7 @@ sap.ui.define(["sap/ui/base/Object",
3089
3089
  * @param {sap.suite.ui.generic.template.lib.AppComponent} oAppComponent The AppComponent instance
3090
3090
  * @public
3091
3091
  * @extends sap.ui.base.Object
3092
- * @version 1.120.33
3092
+ * @version 1.120.35
3093
3093
  * @since 1.30.0
3094
3094
  * @alias sap.suite.ui.generic.template.lib.NavigationController
3095
3095
  */
@@ -60,7 +60,7 @@ sap.ui.define([
60
60
  interfaces: [],
61
61
  controls: [],
62
62
  elements: [],
63
- version: "1.120.33",
63
+ version: "1.120.35",
64
64
  extensions: {
65
65
  //Configuration used for rule loading of Support Assistant
66
66
  "sap.ui.support": {