@sapui5/sap.suite.ui.generic.template 1.144.1 → 1.145.1

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 (36) hide show
  1. package/package.json +1 -1
  2. package/src/sap/suite/ui/generic/template/.library +1 -1
  3. package/src/sap/suite/ui/generic/template/AnalyticalListPage/manifest.json +1 -1
  4. package/src/sap/suite/ui/generic/template/Canvas/behaviour.js +11 -0
  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 +92 -9
  7. package/src/sap/suite/ui/generic/template/ListReport/controller/IappStateHandler.js +19 -8
  8. package/src/sap/suite/ui/generic/template/ListReport/manifest.json +1 -1
  9. package/src/sap/suite/ui/generic/template/ListReport/view/fragments/SmartChart.fragment.xml +3 -2
  10. package/src/sap/suite/ui/generic/template/ListReport/view/fragments/SmartTable.fragment.xml +5 -4
  11. package/src/sap/suite/ui/generic/template/ObjectPage/controller/ControllerImplementation.js +5 -2
  12. package/src/sap/suite/ui/generic/template/ObjectPage/extensionAPI/ExtensionAPI.js +2 -2
  13. package/src/sap/suite/ui/generic/template/ObjectPage/manifest.json +1 -1
  14. package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/SmartChart.fragment.xml +3 -2
  15. package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/SmartTable.fragment.xml +3 -2
  16. package/src/sap/suite/ui/generic/template/QuickCreate/manifest.json +1 -1
  17. package/src/sap/suite/ui/generic/template/QuickView/manifest.json +1 -1
  18. package/src/sap/suite/ui/generic/template/designtime/floorplans/ObjectPage.designtime.js +6 -1
  19. package/src/sap/suite/ui/generic/template/designtime/utils/designtimeUtils.js +10 -3
  20. package/src/sap/suite/ui/generic/template/fragments/QuickViewSmartForm.fragment.xml +4 -3
  21. package/src/sap/suite/ui/generic/template/genericUtilities/ControlStateWrapperFactory.js +108 -67
  22. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/DynamicPageWrapper.js +19 -51
  23. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/ObjectPageLayoutWrapper.js +10 -32
  24. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/PreliminaryWrapper.js +151 -0
  25. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SearchFieldWrapper.js +8 -30
  26. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartFilterBarWrapper.js +49 -162
  27. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartTableChartCommon.js +100 -94
  28. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartTableWrapper.js +22 -3
  29. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartVariantManagementWrapper.js +90 -81
  30. package/src/sap/suite/ui/generic/template/lib/AppComponent.js +1 -1
  31. package/src/sap/suite/ui/generic/template/lib/PageLeaveHandler.js +36 -8
  32. package/src/sap/suite/ui/generic/template/lib/i18n/i18n.properties +3 -0
  33. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_US_saprigi.properties +2 -0
  34. package/src/sap/suite/ui/generic/template/lib/navigation/NavigationController.js +10 -25
  35. package/src/sap/suite/ui/generic/template/lib/presentationControl/SmartTableHandler.js +1 -1
  36. package/src/sap/suite/ui/generic/template/library.js +1 -1
@@ -4,18 +4,16 @@ sap.ui.define([
4
4
 
5
5
  /**
6
6
  * Constructor for SmartVariantManagementWrapper
7
- * @param {sap.ui.comp.smartvariants.SmartVariantManagement} vTarget - The SmartVariantManagement control
8
- * or the Id of control for which this wrapper is created
7
+ * @param {sap.ui.comp.smartvariants.SmartVariantManagement} oControl - The SmartVariantManagement control
9
8
  * @param {object} oController - the controller of the current component
10
9
  * @param {object} oFactory - the controlStateWrapperFactory
11
10
  * @param {object} mParams
12
11
  * @param {array} mParams.managedControlWrappers - array of controlStateWrappers for controls handled by the SVM
13
- * (currently also including SFB wrapper - to be removed)
14
- * @param {Object} mParams.dynamicPageWrapper - dynamicPageWrapper instance handled by SVM
12
+ * @param {object} mParams.smartFilterBarWrapper - explicit reference to SmartFilterBarWrapper for special handling
15
13
  * @returns {object}
16
14
  */
17
15
 
18
- function SmartVariantManagementWrapper(vTarget, oController, oFactory, mParams) {
16
+ function SmartVariantManagementWrapper(oControl, oController, oFactory, mParams) {
19
17
  // Special handling of SmartFilterBarWrapper for several reasons:
20
18
  // - Suppress selection when restoring a variant. Selection is solely triggered according to information in appState. Otherwise, erroneous selection could be triggered in
21
19
  // a few situations:
@@ -26,14 +24,10 @@ sap.ui.define([
26
24
  // - Store and restore extension state (extension implemented in SFB instead of SVM, which would be more appropriate from architectural point of view)
27
25
  // flag to control whether we are currently in the process of applying a state to suppress the event to inform about a new state´
28
26
  // only needed when setting the variant itself - for managed controls, their wrappers should avoid firing the event themselves
29
- var oSmartVariantManagement, fnResolveControlAssigned, oPreliminaryState;
30
- var oControlAssignedPromise = new Promise(function (resolve) {
31
- fnResolveControlAssigned = resolve;
32
- });
33
-
34
- if (typeof vTarget !== "string") {
35
- fnSetControl(vTarget);
36
- }
27
+ var oSmartVariantManagement = oControl;
28
+ var oPreliminaryState;
29
+ var bIsApplyingVariant = false;
30
+ var bAllControlsInitialized = false;
37
31
 
38
32
  // Handles the state of the variant management itself (i.e. which variant is selected and whether it's dirty), including the state of the managed controls.
39
33
  // Is responsible esp. to restore this state with correct dependency resp. in correct order
@@ -50,69 +44,74 @@ sap.ui.define([
50
44
  // For these controls, a real user changes are already handled by the direct connection. On the other hand, these controls also fire their change events, if their state is
51
45
  // changed from SVM (by the same connection) - setting variant dirty here would be wrong.
52
46
  mParams.managedControlWrappers.forEach(function(oWrapper){
53
- if (!oWrapper.bVMConnection){
54
- oWrapper.attachStateChanged(function(){
55
- oSmartVariantManagement.currentVariantSetModified(true);
56
- });
57
- }
47
+ (oWrapper.oVMConnectionPromise || Promise.resolve(oWrapper.bVMConnection)).then(function(bVMConnection) {
48
+ if (!bVMConnection) {
49
+ oWrapper.attachStateChanged(function(){
50
+ oSmartVariantManagement.currentVariantSetModified(true);
51
+ });
52
+ }
53
+ });
58
54
  });
59
55
 
56
+ // Get SmartFilterBarWrapper explicitly from params.
57
+ // This connection is needed because SmartFilterBar provides special callbacks to store/restore state
58
+ // for controls that don't have a direct variant management connection (bVMConnection = false), such as:
59
+ // - Extension filters (custom filters added via app or adaptation extensions)
60
+ // - Multiple views state (selected tab in multi-table/chart scenarios)
61
+ // These controls need their state saved/restored with variants via the SFB's beforeVariantFetch/afterVariantLoad events.
62
+ var oSmartFilterBarWrapper = mParams.smartFilterBarWrapper;
60
63
 
61
-
62
- function fnSetControl(oControl) {
63
- oSmartVariantManagement = oControl;
64
- fnResolveControlAssigned(oSmartVariantManagement);
65
- }
66
-
67
- var oSmartFilterBarWrapper = mParams.managedControlWrappers.find(function(oWrapper){
68
- return oWrapper.setSVMWrapperCallbacks;
69
- });
70
-
71
- // provide callbacks needed for SFB wrapper to store/restore extnesion state with variant
64
+ // Provide callbacks needed for SFB wrapper to store/restore extension state with variant
72
65
  if (oSmartFilterBarWrapper){
73
- oSmartFilterBarWrapper.setSVMWrapperCallbacks({
74
- getManagedControlStates: function(){
75
- var mManagedControlStates = Object.create(null);
76
- mParams.managedControlWrappers.forEach(function(oWrapper){
77
- if (!oWrapper.bVMConnection){
78
- mManagedControlStates[oWrapper.getLocalId()] = oWrapper.getState();
79
- }
80
- });
81
- return mManagedControlStates;
82
- },
83
- setManagedControlStates: function(oState){
84
- mParams.managedControlWrappers.forEach(function(oWrapper){
85
- if (!oWrapper.bVMConnection){
86
- oWrapper.setState(oState[oWrapper.getLocalId()]);
87
- }
88
- });
89
- },
90
- setHeaderState: function(bHeaderToBeExpanded) {
91
- mParams.dynamicPageWrapper.setHeaderState(oController, bHeaderToBeExpanded);
92
- }
66
+ // Build array with wrapper + bVMConnection info once all wrappers are ready
67
+ Promise.all(mParams.managedControlWrappers.map(function(oWrapper){
68
+ return (oWrapper.oVMConnectionPromise || Promise.resolve(oWrapper.bVMConnection)).then(function(bVMConnection){
69
+ return {
70
+ wrapper: oWrapper,
71
+ bVMConnection: bVMConnection
72
+ };
73
+ });
74
+ })).then(function(aWrapperInfo) {
75
+ oSmartFilterBarWrapper.setSVMWrapperCallbacks({
76
+ getManagedControlStates: function(){
77
+ var mManagedControlStates = Object.create(null);
78
+ aWrapperInfo.forEach(function(oInfo){
79
+ if (!oInfo.bVMConnection) {
80
+ mManagedControlStates[oInfo.wrapper.getLocalId()] = oInfo.wrapper.getState();
81
+ }
82
+ });
83
+ return mManagedControlStates;
84
+ },
85
+ setManagedControlStates: function(oState){
86
+ aWrapperInfo.forEach(function(oInfo){
87
+ if (!oInfo.bVMConnection) {
88
+ oInfo.wrapper.setState(oState[oInfo.wrapper.getLocalId()]);
89
+ }
90
+ });
91
+ }
92
+ });
93
93
  });
94
94
  }
95
95
 
96
+ // Create promise that resolves when all managed controls' variant management is ready
97
+ // This ensures getState() can query controls even if setState() is never called (e.g., app starts from scratch)
98
+ var oAllControlsInitializedPromise = Promise.all(
99
+ mParams.managedControlWrappers.map(function(oWrapper){
100
+ return oWrapper.oVariantManagementInitializedPromise || Promise.resolve();
101
+ })
102
+ );
103
+
104
+ // Set flag when all controls are initialized
105
+ oAllControlsInitializedPromise.then(function() {
106
+ bAllControlsInitialized = true;
107
+ });
108
+
96
109
  // Wrapper is intended to set a state to the ui, but not to trigger a selection (which should happen only after all (relevant) parts of ui state is set to the correct state
97
110
  // are set correct. Therefore, setting variant from here should never trigger a selection.
98
111
  function fnSetVariant(sVariantId){
99
112
  if (oSmartFilterBarWrapper){
100
113
  oSmartFilterBarWrapper.suppressSelection(true);
101
114
  }
102
- var sId = mParams.managedControlWrappers[0].getLocalId();
103
- var oControl = oController.getView().byId(sId);
104
- if (oControl && oControl.isA("sap.ui.comp.smarttable.SmartTable")) {
105
- oControl.attachAfterVariantInitialise(function() {
106
- //set currentVariantId only when sVariantId is not standard (as it might be overriding existing
107
- //different currentVariantId) or smartTable's (oControl) currentVariantId is not equal to sVariantId.
108
- if (sVariantId !== '*standard*' && sVariantId !== '') {
109
- if (oControl.getCurrentVariantId && oControl.getCurrentVariantId() !== sVariantId) {
110
- oControl.setCurrentVariantId(sVariantId);
111
- }
112
- oSmartVariantManagement.setModified(false);
113
- }
114
- });
115
- }
116
115
  oSmartVariantManagement.setCurrentVariantId(sVariantId);
117
116
  if (oSmartFilterBarWrapper){
118
117
  oSmartFilterBarWrapper.suppressSelection(false);
@@ -133,7 +132,11 @@ sap.ui.define([
133
132
  }
134
133
 
135
134
  function getState() {
136
- if (!oSmartVariantManagement) {
135
+ // Return preliminary state if managed controls not fully initialized
136
+ // Note: If early getState() calls become an issue (controls not initialized yet), we could enhance this to:
137
+ // - Store only SVM-specific data (variantId, modified) in oPreliminaryState
138
+ // - Always query managed control wrappers directly (they handle their own preliminary state via PreliminaryWrapper)
139
+ if (!bAllControlsInitialized) {
137
140
  return oPreliminaryState;
138
141
  }
139
142
 
@@ -150,22 +153,23 @@ sap.ui.define([
150
153
 
151
154
  function setState(oState) {
152
155
  oPreliminaryState = oState;
153
- oControlAssignedPromise.then(function() {
156
+
157
+ // Wait for all managed controls to be initialized before applying state
158
+ oAllControlsInitializedPromise.then(function() {
159
+ bIsApplyingVariant = true;
154
160
  if (!oPreliminaryState) {
155
161
  // if no state is provided set default variant (not modified)
156
162
  // use cases:
157
163
  // - LR: if appStateKey in the URL that cannot be read
158
164
  // - OP: if switching to different object instance (in discovery mode always, in persistency mode when page was not shown)
159
165
  fnSetVariant(oSmartVariantManagement.getDefaultVariantId());
160
- return;
161
- }
162
- if (oPreliminaryState.modified) {
166
+ } else if (oPreliminaryState.modified) {
163
167
  // Special logic according to UX: If variant was modified anyway, there's no benefit for the user to see the name (but it could be confusing), so standard variant (not default!) should be
164
168
  // set (which is achieved by empty string)
165
169
  fnSetVariant("");
170
+ oSmartVariantManagement.currentVariantSetModified(true);
166
171
  // Usually restoring the state of any of the managed controls should mark the variant as dirty, but there might be edge cases (state from an old release not containing information for any
167
172
  // managed control now relevant), so to be on the safe side, we set modified=true explicitly.
168
- oSmartVariantManagement.currentVariantSetModified(true);
169
173
  fnSetManagedControlStates(oPreliminaryState);
170
174
  } else {
171
175
  fnSetVariant(oPreliminaryState.variantId);
@@ -183,6 +187,7 @@ sap.ui.define([
183
187
  }
184
188
  }
185
189
  }
190
+ bIsApplyingVariant = false;
186
191
  });
187
192
  }
188
193
 
@@ -190,26 +195,30 @@ sap.ui.define([
190
195
  // state of variant management itself can be changed directly (user selects a different variant or stores current state as (new) variant), or indirectly (user changes some
191
196
  // data of a control managed by VM, e.g. some filter values in SFB)
192
197
 
193
- oControlAssignedPromise.then(function() {
194
- // state change when user selects a different variant
195
- oSmartVariantManagement.attachSelect(fnHandler);
198
+ // Wrap the handler to suppress events when applying a variant
199
+ var fnSuppressibleHandler = function() {
200
+ if (!bIsApplyingVariant) {
201
+ fnHandler();
202
+ }
203
+ };
196
204
 
197
- // when user saves current state as a new variant, this is also a state change (as the variant id is part of the state)
198
- // note: Even if new (SFB) variant is marked as execute on select, and currently no data is selected, no need to select data here (and thus also not to collapse header).
199
- // This is one of the possible ways to get into a state with a clean variant with execute on select, but no data loaded - see also comment to identify SFB wrapper.
200
- oSmartVariantManagement.attachAfterSave(fnHandler);
205
+ // state change when user selects a different variant
206
+ oSmartVariantManagement.attachSelect(fnSuppressibleHandler);
201
207
 
202
- // any change of a managed control is state change
203
- mParams.managedControlWrappers.forEach(function(oWrapper){
204
- oWrapper.attachStateChanged(fnHandler);
205
- });
208
+ // when user saves current state as a new variant, this is also a state change (as the variant id is part of the state)
209
+ // note: Even if new (SFB) variant is marked as execute on select, and currently no data is selected, no need to select data here (and thus also not to collapse header).
210
+ // This is one of the possible ways to get into a state with a clean variant with execute on select, but no data loaded - see also comment to identify SFB wrapper.
211
+ oSmartVariantManagement.attachAfterSave(fnSuppressibleHandler);
212
+
213
+ // any change of a managed control is state change
214
+ mParams.managedControlWrappers.forEach(function(oWrapper){
215
+ oWrapper.attachStateChanged(fnSuppressibleHandler);
206
216
  });
207
217
  }
208
218
 
209
219
  return {
210
220
  getState : getState,
211
221
  setState : setState,
212
- setControl: fnSetControl,
213
222
  attachStateChanged : attachStateChanged
214
223
  };
215
224
  }
@@ -959,7 +959,7 @@ sap.ui.define([
959
959
  * @public
960
960
  * @extends sap.ui.core.UIComponent
961
961
  * @author SAP SE
962
- * @version 1.144.1
962
+ * @version 1.145.1
963
963
  * @name sap.suite.ui.generic.template.lib.AppComponent
964
964
  */
965
965
  var oAppComponent = UIComponent.extend("sap.suite.ui.generic.template.lib.AppComponent", {
@@ -1,5 +1,5 @@
1
- sap.ui.define(["sap/ui/base/Object",
2
- "sap/base/util/extend",
1
+ sap.ui.define(["sap/ui/base/Object",
2
+ "sap/base/util/extend",
3
3
  "sap/suite/ui/generic/template/lib/CRUDHelper",
4
4
  "sap/suite/ui/generic/template/lib/MessageUtils"
5
5
  ], function (BaseObject, extend, CRUDHelper, MessageUtils) {
@@ -7,7 +7,7 @@ sap.ui.define(["sap/ui/base/Object",
7
7
 
8
8
  function getMethods(oTemplateContract) {
9
9
 
10
- var fnOnDiscardOrKeepDraftConfirmed,
10
+ var fnOnDiscardOrKeepDraftConfirmed,
11
11
  fnOnDiscardOrKeepDraftCancel;
12
12
 
13
13
  function getSelectedKey(oKeepDiscardPopup) {
@@ -22,6 +22,22 @@ sap.ui.define(["sap/ui/base/Object",
22
22
  firstListItemOption.focus();
23
23
  }
24
24
 
25
+ function checkIfNavigationIsExplace() {
26
+ var UShellContainer = sap.ui.require("sap/ushell/Container");
27
+ if (!UShellContainer) {
28
+ return Promise.resolve(false); // No UShell container, assume inplace navigation
29
+ }
30
+
31
+ return UShellContainer.getServiceAsync("FioriElements").then(function(oFioriElementsService) {
32
+ if (oFioriElementsService && typeof oFioriElementsService.isExplaceNavigation === "function") {
33
+ return oFioriElementsService.isExplaceNavigation();
34
+ }
35
+ return false; // API not available, default to inplace behavior
36
+ }).catch(function() {
37
+ return false; // Service not available or error, default to inplace behavior
38
+ });
39
+ }
40
+
25
41
  /*
26
42
  ShowDiscardDraftPopUp
27
43
  */
@@ -29,7 +45,7 @@ sap.ui.define(["sap/ui/base/Object",
29
45
  fnOnDiscardOrKeepDraftConfirmed = onDiscardOrKeepDraftConfirmed;
30
46
  fnOnDiscardOrKeepDraftCancel = onDiscardOrKeepDraftCancel;
31
47
 
32
- var oDraftPopup,
48
+ var oDraftPopup,
33
49
  oComponent = getComponent(),
34
50
  oController = oComponent.oController;
35
51
  var sFragmentname = "sap.suite.ui.generic.template.ObjectPage.view.fragments.DraftConfirmationPopup";
@@ -134,13 +150,25 @@ sap.ui.define(["sap/ui/base/Object",
134
150
  function fnPerformAfterDiscardOrKeepDraftImpl(fnPositive, fnNegative, sMode, bIsTechnical) {
135
151
  var sEnableDiscardDraftConfirmation = oTemplateContract.oNavigationControllerProxy.isDiscardDraftConfirmationNeeded();
136
152
  var bNeedsPopup = ((sEnableDiscardDraftConfirmation === "always" && sMode.startsWith("Leave")) || (sEnableDiscardDraftConfirmation === "restricted" && sMode === "LeavePage")) && isObjectEditable();
137
- if (bNeedsPopup) {
138
- fnDiscardOrKeepDraftConfirmation(fnPositive, fnNegative, sMode);
139
- } else {
153
+
154
+ if (!bNeedsPopup) {
140
155
  fnPositive();
156
+ return;
141
157
  }
158
+
159
+ // Check if navigation will be explace and skip popup if so
160
+ checkIfNavigationIsExplace().then(function(bIsExplace) {
161
+ if (bIsExplace) {
162
+ fnPositive(); // Skip popup for explace navigation
163
+ } else {
164
+ fnDiscardOrKeepDraftConfirmation(fnPositive, fnNegative, sMode);
165
+ }
166
+ }).catch(function() {
167
+ // Fallback: show popup as before if API check fails
168
+ fnDiscardOrKeepDraftConfirmation(fnPositive, fnNegative, sMode);
169
+ });
142
170
  }
143
-
171
+
144
172
  function getComponent() {
145
173
  var oComponent;
146
174
  var oCurrentIdentity = oTemplateContract.oNavigationControllerProxy.getCurrentIdentity();
@@ -565,6 +565,9 @@ RTA_CONFIGURATION_TITLE_FILTER_BAR=Configure Filter Bar
565
565
  # XTIT: Title text on Configurations dialog for Object Page
566
566
  RTA_CONFIGURATION_TITLE_OBJECT_PAGE=Configure Object Page
567
567
 
568
+ # XMSG: Information message text in Configurations dialog
569
+ RTA_CONFIGURATION_INFO_MESSAGE=Changes will only be visible after the application reloads.
570
+
568
571
  # XBUT: Button text for Cancel on Configurations dialog
569
572
  RTA_CONFIGURATION_CANCEL=Cancel
570
573
 
@@ -368,6 +368,8 @@ RTA_CONFIGURATION_TITLE_FILTER_BAR=\u206A\u206A\u206A\u200C\u200C\u200B\u200B\u2
368
368
 
369
369
  RTA_CONFIGURATION_TITLE_OBJECT_PAGE=\u206A\u206A\u206A\u200C\u200D\u200C\u200D\u200D\u200D\u200D\u200D\u200B\u200D\u200C\u200D\u200B\u200C\u200C\u200C\u200D\u200C\u200B\u200D\u200B\u200C\u200D\u200D\u200D\u200D\u200D\u200C\u200C\u200C\u200B\u200C\u200B\u200B\u200C\u200B\u200C\u200C\u200B\u206AConfigure Object Page\u206A\u206A
370
370
 
371
+ RTA_CONFIGURATION_INFO_MESSAGE=\u206A\u206A\u206A\u200C\u200D\u200D\u200C\u200D\u200B\u200C\u200D\u200C\u200D\u200C\u200D\u200C\u200C\u200C\u200D\u200D\u200D\u200C\u200D\u200D\u200D\u200B\u200D\u200D\u200D\u200D\u200C\u200D\u200B\u200C\u200C\u200C\u200C\u200B\u200C\u200D\u200C\u200C\u200C\u206AChanges will only be visible after the application reloads.\u206A\u206A
372
+
371
373
  RTA_CONFIGURATION_CANCEL=\u206A\u206A\u206A\u200C\u200B\u200B\u200D\u200B\u200C\u200C\u200D\u200B\u200B\u200D\u200C\u200C\u200B\u200B\u200B\u200C\u200D\u200B\u200B\u200C\u200D\u200D\u200C\u200B\u200D\u200B\u200D\u200B\u200D\u200B\u200D\u200C\u200C\u200C\u200C\u200D\u200C\u206ACancel\u206A\u206A
372
374
 
373
375
  RTA_CONFIGURATION_APPLY=\u206A\u206A\u206A\u200C\u200C\u200B\u200B\u200B\u200D\u200C\u200D\u200C\u200C\u200C\u200B\u200C\u200B\u200B\u200D\u200B\u200D\u200C\u200B\u200B\u200D\u200D\u200D\u200D\u200C\u200D\u200D\u200C\u200D\u200D\u200B\u200C\u200D\u200B\u200C\u200D\u200C\u200C\u200D\u200B\u206AApply\u206A\u206A
@@ -2219,25 +2219,6 @@ sap.ui.define(["sap/ui/base/Object",
2219
2219
  }) : Promise.reject();
2220
2220
  }
2221
2221
 
2222
- /**
2223
- * Calls state changer per each (template) component on url change.
2224
- * @param {Array<sap.suite.ui.generic.template.lib.StatePreserver>} aStateChangers array of StatePreserver instances
2225
- * @param {map} appStates map of appStates
2226
- * @param {boolean} bIsFCLMode optional, defined only in FLC
2227
- * @returns {boolean} returns true if url change can be handled by state changer,
2228
- * returns false in FCL, so the route-matched logic will continue as normal.
2229
- */
2230
- function fnGetIsStateChange(aStateChangers, appStates, bIsFCLMode) {
2231
- var bIsStateChangeResult = false;
2232
- for (var i = 0; i < aStateChangers.length; i++){
2233
- var oStateChanger = aStateChangers[i];
2234
- if (oStateChanger.isStateChange(appStates)){
2235
- bIsStateChangeResult = bIsFCLMode ? false : true;
2236
- }
2237
- }
2238
- return bIsStateChangeResult;
2239
- }
2240
-
2241
2222
  // Start: Handling url-changes
2242
2223
  /*
2243
2224
  * calls onActivate on the specified view, if it exists
@@ -2541,11 +2522,16 @@ sap.ui.define(["sap/ui/base/Object",
2541
2522
  fnNavigate(sTargetHash, true);
2542
2523
  return; // fnHandleRouteMatched will be called with the new url, so leave further processing to that call
2543
2524
  }
2544
- // State changers can interfere in FCL, for example between LR and OP when the search query is updated. In particular, it is necessary to skip the early return in FCL and display an error in case of 404.
2545
- // The last parameter will still trigger state changers (with possible side effects), but will never return true as a result.
2546
- var bIsStateChange = fnGetIsStateChange(oTemplateContract.aStateChangers, oCurrentIdentity.appStates, !!oTemplateContract.oFlexibleColumnLayoutHandler);
2547
2525
  // State changers may identify the hash change as something which can be handled by them internally. In this case we do not need to run the whole mechanism.
2548
2526
  // Since isStateChange is allowed to have side-effects we call all StateChangers.
2527
+ var bIsStateChange = false;
2528
+ for (var i = 0; i < oTemplateContract.aStateChangers.length; i++){
2529
+ var oStateChanger = oTemplateContract.aStateChangers[i];
2530
+ if (oStateChanger.isStateChange(oCurrentIdentity.appStates)){
2531
+ bIsStateChange = true;
2532
+ }
2533
+ }
2534
+
2549
2535
  if (bIsStateChange){
2550
2536
  oRoutingOptions = null;
2551
2537
  oCurrentHash.hash = sHash;
@@ -3130,8 +3116,7 @@ sap.ui.define(["sap/ui/base/Object",
3130
3116
  var fnPrepareHostView = testableHelper.testable(fnPrepareHostView, "prepareHostView");
3131
3117
  var fnPreloadComponent = testableHelper.testable(fnPreloadComponent, "preloadComponent");
3132
3118
  var fnGetRouteInfoByHash = testableHelper.testable(fnGetRouteInfoByHash, "getRouteInfoByHash");
3133
- var fnGetIsStateChange = testableHelper.testable(fnGetIsStateChange, "getIsStateChange");
3134
-
3119
+
3135
3120
  // Note: Function createHostView will be added by routingHelper.
3136
3121
  // Allow to mock this by unit tests
3137
3122
  testableHelper.testable(function(fnCreateHostView){
@@ -3228,7 +3213,7 @@ sap.ui.define(["sap/ui/base/Object",
3228
3213
  * @param {sap.suite.ui.generic.template.lib.AppComponent} oAppComponent The AppComponent instance
3229
3214
  * @public
3230
3215
  * @extends sap.ui.base.Object
3231
- * @version 1.144.1
3216
+ * @version 1.145.1
3232
3217
  * @since 1.30.0
3233
3218
  * @alias sap.suite.ui.generic.template.lib.NavigationController
3234
3219
  */
@@ -586,7 +586,7 @@ sap.ui.define([
586
586
  const getFieldProps = function (sField) {
587
587
  return {
588
588
  "sProperty": sField,
589
- "sLabel": (mPropertyByFieldName[sField]["com.sap.vocabularies.Common.v1.Label"] || "").String || mPropertyByFieldName[sField]["sap:label"] || "",
589
+ "sLabel": getColumnLabel(sField),
590
590
  "sValue": oItemContext.getProperty(sField),
591
591
  "bHidden": !aVisibleColumns.has(sField)
592
592
  };
@@ -66,7 +66,7 @@ sap.ui.define([
66
66
  interfaces: [],
67
67
  controls: [],
68
68
  elements: [],
69
- version: "1.144.1",
69
+ version: "1.145.1",
70
70
  extensions: {
71
71
  //Configuration used for rule loading of Support Assistant
72
72
  "sap.ui.support": {