@sapui5/sap.suite.ui.generic.template 1.108.49 → 1.108.50

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 (18) 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/i18n/i18n_bg.properties +3 -3
  4. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_da.properties +3 -3
  5. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_id.properties +2 -2
  6. package/src/sap/suite/ui/generic/template/ListReport/controller/IappStateHandler.js +2 -1
  7. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_id.properties +1 -1
  8. package/src/sap/suite/ui/generic/template/ObjectPage/controller/RelatedAppsHandler.js +28 -26
  9. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_sl.properties +3 -3
  10. package/src/sap/suite/ui/generic/template/genericUtilities/ControlStateWrapperFactory.js +12 -5
  11. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/PreliminaryWrapper.js +83 -76
  12. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartVariantManagementWrapper.js +16 -6
  13. package/src/sap/suite/ui/generic/template/lib/AppComponent.js +1 -1
  14. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fi.properties +2 -2
  15. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fr.properties +2 -2
  16. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ru.properties +5 -5
  17. package/src/sap/suite/ui/generic/template/lib/navigation/NavigationController.js +4 -4
  18. 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.108.49",
3
+ "version": "1.108.50",
4
4
  "description": "SAPUI5 Library sap.suite.ui.generic.template",
5
5
  "keywords": [
6
6
  "sapui5",
@@ -7,7 +7,7 @@
7
7
 
8
8
  (c) Copyright 2009-2015 SAP SE. All rights reserved
9
9
  </copyright>
10
- <version>1.108.49</version>
10
+ <version>1.108.50</version>
11
11
 
12
12
  <documentation>Library with generic Suite UI templates.</documentation>
13
13
 
@@ -106,11 +106,11 @@ CONTACT_FAX=\u0424\u0430\u043A\u0441
106
106
 
107
107
 
108
108
 
109
- CONTAINER_VIEW_TABLE=\u041A\u0430\u0442\u043E \u0442\u0430\u0431\u043B\u0438\u0446\u0430
109
+ CONTAINER_VIEW_TABLE=\u0422\u0430\u0431\u043B\u0438\u0447\u0435\u043D \u0438\u0437\u0433\u043B\u0435\u0434
110
110
 
111
- CONTAINER_VIEW_CHART=\u041A\u0430\u0442\u043E \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u0430
111
+ CONTAINER_VIEW_CHART=\u0414\u0438\u0430\u0433\u0440\u0430\u043C\u0435\u043D \u0438\u0437\u0433\u043B\u0435\u0434
112
112
 
113
- CONTAINER_VIEW_CHARTTABLE=\u041A\u0430\u0442\u043E \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u0430 \u0438 \u0442\u0430\u0431\u043B\u0438\u0446\u0430
113
+ CONTAINER_VIEW_CHARTTABLE=\u0418\u0437\u0433\u043B\u0435\u0434 \u043D\u0430 \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u0430 \u0438 \u0442\u0430\u0431\u043B\u0438\u0446\u0430
114
114
 
115
115
  CONTAINER_VIEW_CROSSTAB=\u0410\u0441\u043F\u0435\u043A\u0442 \u0437\u0430 \u0432\u0441\u0438\u0447\u043A\u0438 \u0442\u0430\u0431\u043B\u0438\u0446\u0438
116
116
 
@@ -106,11 +106,11 @@ CONTACT_FAX=Fax
106
106
 
107
107
 
108
108
 
109
- CONTAINER_VIEW_TABLE=Tabelview
109
+ CONTAINER_VIEW_TABLE=Tabelvisning
110
110
 
111
- CONTAINER_VIEW_CHART=Diagramview
111
+ CONTAINER_VIEW_CHART=Diagramvisning
112
112
 
113
- CONTAINER_VIEW_CHARTTABLE=Diagram- og tabelview
113
+ CONTAINER_VIEW_CHARTTABLE=Diagram- og tabelvisning
114
114
 
115
115
  CONTAINER_VIEW_CROSSTAB=Krydstabelview
116
116
 
@@ -65,9 +65,9 @@ VISUAL_FILTER_CHART_TYPE_Donut=Bagan Donat
65
65
 
66
66
  VISUAL_FILTER_SORTING=Pengurutan
67
67
 
68
- VISUAL_FILTER_SORTING_ASCENDING=Naik
68
+ VISUAL_FILTER_SORTING_ASCENDING=Menaik
69
69
 
70
- VISUAL_FILTER_SORTING_DESCENDING=Turun
70
+ VISUAL_FILTER_SORTING_DESCENDING=Menurun
71
71
 
72
72
  VISUAL_FILTER_LINE_CHART_TIME_LINE=Tampilkan
73
73
 
@@ -218,7 +218,8 @@ sap.ui.define([
218
218
  var oSmartVariantManagement = oState.oSmartFilterbar.getSmartVariant();
219
219
  if (oSmartVariantManagement){
220
220
  var oSmartVariantManagementWrapper = oTemplateUtils.oCommonUtils.getControlStateWrapper(oSmartVariantManagement, {
221
- managedControlWrappers: aPageVariantControlStateWrappers.concat([oSmartFilterBarWrapper])
221
+ managedControlWrappers: aPageVariantControlStateWrappers.concat([oSmartFilterBarWrapper]),
222
+ smartFilterBarWrapper: oSmartFilterBarWrapper
222
223
  });
223
224
  aControlStateWrappers.push(oSmartVariantManagementWrapper);
224
225
  } else {
@@ -126,7 +126,7 @@ LOCKED_OBJECT_FILTER=Dikunci oleh Pengguna Lain
126
126
 
127
127
  UNSAVED_CHANGES=Perubahan Belum Disimpan
128
128
 
129
- UNSAVED_CHANGES_FILTER=Perubahan oleh Pengguna Lain yang Belum Disimpan
129
+ UNSAVED_CHANGES_FILTER=Perubahan yang Belum Disimpan oleh Pengguna Lain
130
130
 
131
131
  SHARE=Bagikan
132
132
 
@@ -83,43 +83,46 @@ sap.ui.define([
83
83
  fnReject();
84
84
  return;
85
85
  }
86
+
87
+ var oAppComponent = oController.getOwnerComponent().getAppComponent();
88
+ // Preparing the array of semantic objects to fetch links.
89
+ // Initialize the array with the current app's semantic object.
90
+ var aSemanticObjects = [sCurrentSemObj];
91
+
86
92
  //Get all semantic object from manifest setting
87
93
  var oSettings = oTemplateUtils.oComponentUtils.getSettings();
88
94
  var oRelatedAppsSettings = oSettings.relatedAppsSettings;
89
-
90
- var oLinksDeferred;
91
95
  var bHasRelatedAppSettings = oRelatedAppsSettings && Object.keys(oRelatedAppsSettings).length > 0;
92
96
  if (bHasRelatedAppSettings) {
93
- var aSemanticObjects = [[{
94
- semanticObject: sCurrentSemObj
95
- }]];
96
-
97
+ // Iterate through oRelatedAppsSettings and add all semantic objects.
97
98
  for (var sKey in oRelatedAppsSettings) {
98
- if (sKey) {
99
- aSemanticObjects.push([{
100
- semanticObject: oRelatedAppsSettings[sKey].semanticObject
101
- }]);
99
+ if (oRelatedAppsSettings.hasOwnProperty(sKey)) {
100
+ var sSemanticObject = oRelatedAppsSettings[sKey].semanticObject;
101
+ aSemanticObjects.push(sSemanticObject);
102
102
  }
103
103
  }
104
- oLinksDeferred = oXApplNavigation.getLinks(aSemanticObjects);
105
- } else {
106
- var oAppComponent = oController.getOwnerComponent().getAppComponent();
107
- oLinksDeferred = oXApplNavigation.getLinks({
108
- semanticObject: sCurrentSemObj,
104
+ }
105
+ // Remove duplicates
106
+ aSemanticObjects = Array.from(new Set(aSemanticObjects));
107
+ // Add parameters to semantic objects
108
+ var aSemanticObjectsWithParams = aSemanticObjects.map(function (sSemanticObject) {
109
+ return [{
110
+ semanticObject: sSemanticObject,
109
111
  params: oParam,
110
112
  ui5Component: oAppComponent
111
- });
112
- }
113
- oLinksDeferred.done(function (aLinks) {
113
+ }];
114
+ });
115
+
116
+ oXApplNavigation.getLinks(aSemanticObjectsWithParams).done(function (aResult) {
117
+ // Convert the response into a single dimension array by flattening it
118
+ var aLinks = aResult.flat(Infinity);
119
+ // Get structured links
114
120
  var aSemObjWithLink = [];
115
- var fnAddLink = function(oLinkDef){
121
+ var fnAddLink = function (oLinkDef) {
116
122
  var oLink = getStructuredSemanticObjectActionLinks(oLinkDef);
117
- aSemObjWithLink.push(oLink);
123
+ aSemObjWithLink.push(oLink);
118
124
  };
119
- aLinks.forEach(bHasRelatedAppSettings ? function(aLinks){
120
- aLinks[0].forEach(fnAddLink);
121
- } : fnAddLink);
122
-
125
+ aLinks.forEach(fnAddLink);
123
126
  //Get All Semantic Object Unavailable action
124
127
  var getStringProperty = function (oAction) {
125
128
  return oAction.String;
@@ -186,8 +189,7 @@ sap.ui.define([
186
189
  oButtonsModel.setProperty("/buttons", aButtons);
187
190
  fnResolve();
188
191
  oBusyHelper.getUnbusy().then(oActionSheet.openBy.bind(oActionSheet, oButton));
189
- });
190
- oLinksDeferred.fail(fnReject);
192
+ }).fail(fnReject);
191
193
  }, fnReject);
192
194
  });
193
195
  oBusyHelper.setBusy(oOpenPromise);
@@ -5,7 +5,7 @@ DESCRIPTION=Stran objekta
5
5
 
6
6
  EDIT=Obdelava
7
7
 
8
- CREATE_OBJECT=Ustvari
8
+ CREATE_OBJECT=Kreiraj
9
9
 
10
10
  CREATE_DIALOG_TITLE=Nova postavka
11
11
 
@@ -23,7 +23,7 @@ SAVE_AND_EDIT=Shrani in uredi
23
23
 
24
24
  SAVE_AND_NEXT=Shrani in naprej
25
25
 
26
- CREATE=Ustvari
26
+ CREATE=Kreiraj
27
27
 
28
28
  CONTINUE_LATER=Nadaljevanje pozneje
29
29
 
@@ -43,7 +43,7 @@ DRAFT_FOUND_TITLE=Osnutek na voljo
43
43
 
44
44
  DRAFT_FOUND_TEXT=Za dokument, ki ga prikazujete, je na voljo osnutek. \u017Delite ta osnutek uporabiti za nadaljnjo obdelavo?
45
45
 
46
- CREATE_DRAFT_MESSAGE_TEXT=Ustvarite objekt.
46
+ CREATE_DRAFT_MESSAGE_TEXT=Kreirajte objekt.
47
47
 
48
48
  SAVE_DRAFT_MESSAGE_TEXT=Uporabite spremembe za shranjeno verzijo.
49
49
 
@@ -93,15 +93,16 @@ sap.ui.define([
93
93
  }
94
94
 
95
95
  /**
96
- * Private helper function to create the real wrapper based on control and type.
96
+ * Private helper function to create the real wrapper based on type and control.
97
97
  * This function is injected into PreliminaryWrapper and not exposed in the factory's public API.
98
+ * Parameters are ordered to allow using .bind() for partial application.
98
99
  *
99
- * @param {sap.ui.core.Control} oControl - The control instance
100
100
  * @param {string} sType - The type of control (e.g., "SmartTable", "SmartChart")
101
101
  * @param {object} [mParams] - Additional parameters passed to constructor of wrapper
102
+ * @param {sap.ui.core.Control} oControl - The control instance (last to enable .bind())
102
103
  * @return {object} The real wrapper object for the control with helper methods attached
103
104
  */
104
- function fnCreateRealWrapper(oControl, sType, mParams) {
105
+ function fnCreateRealWrapper(sType, mParams, oControl) {
105
106
  var oWrapper;
106
107
  switch (sType) {
107
108
  case "SmartFilterBar":
@@ -190,8 +191,11 @@ sap.ui.define([
190
191
  return oDummyWrapper;
191
192
  }
192
193
 
194
+ // Create bound function with type and params, leaving oControl to be provided later
195
+ var fnBoundCreator = fnCreateRealWrapper.bind(null, sType, mParams);
196
+
193
197
  // Always create a PreliminaryWrapper
194
- var oPreliminaryWrapper = new PreliminaryWrapper(sId, sType, fnCreateRealWrapper, oController, mParams);
198
+ var oPreliminaryWrapper = new PreliminaryWrapper(sId, fnBoundCreator);
195
199
 
196
200
  // Since control is available, immediately set it
197
201
  oPreliminaryWrapper.setControl(oControl);
@@ -225,8 +229,11 @@ sap.ui.define([
225
229
  }
226
230
  var sId = oController.getView().getLocalId(sControlId);
227
231
  if (!mWrappers[sId]) {
232
+ // Create bound function with type and params, leaving oControl to be provided later
233
+ var fnBoundCreator = fnCreateRealWrapper.bind(null, sControlType, mParams);
234
+
228
235
  // Create a PreliminaryWrapper (control will be set later)
229
- var oPreliminaryWrapper = new PreliminaryWrapper(sId, sControlType, fnCreateRealWrapper, oController, mParams);
236
+ var oPreliminaryWrapper = new PreliminaryWrapper(sId, fnBoundCreator);
230
237
 
231
238
  mWrappers[sId] = oPreliminaryWrapper;
232
239
  }
@@ -1,5 +1,6 @@
1
1
  sap.ui.define([
2
- ], function() {
2
+ "sap/base/util/extend"
3
+ ], function(extend) {
3
4
  "use strict";
4
5
 
5
6
  /**
@@ -11,13 +12,10 @@ sap.ui.define([
11
12
  * real wrapper once the control is assigned via setControl().
12
13
  *
13
14
  * @param {string} sId - The local ID of the control
14
- * @param {string} sType - The type of the control (e.g., "SmartTable", "SmartChart")
15
- * @param {function} fnCreateRealWrapper - Function to create the real wrapper, injected by factory
16
- * @param {object} oController - The controller instance
17
- * @param {object} mParams - Additional parameters to pass to the real wrapper constructor
15
+ * @param {function} fnCreateRealWrapper - Function to create the real wrapper, bound with type and params
18
16
  * @returns {object} Preliminary wrapper object that will delegate to real wrapper once control is set
19
17
  */
20
- function PreliminaryWrapper(sId, sType, fnCreateRealWrapper, oController, mParams) {
18
+ function PreliminaryWrapper(sId, fnCreateRealWrapper) {
21
19
  var oLatestState;
22
20
  var oRealWrapper;
23
21
  var fnResolveRealWrapperReady;
@@ -25,7 +23,7 @@ sap.ui.define([
25
23
  fnResolveRealWrapperReady = resolve;
26
24
  });
27
25
 
28
- return {
26
+ var oPublicInterface = {
29
27
  /**
30
28
  * Get the current state. Returns stored state before control is set,
31
29
  * delegates to real wrapper afterwards.
@@ -48,55 +46,62 @@ sap.ui.define([
48
46
  }
49
47
  },
50
48
 
51
- /**
52
- * Assign the actual control and create the real wrapper.
53
- * This triggers the creation of the real wrapper, applies any stored state,
54
- * and resolves the promise that queues event handler attachments.
55
- * @param {sap.ui.core.Control} oControl - The control instance
56
- */
57
- setControl: function(oControl) {
58
- // Create the real wrapper using injected function
59
- var oCreatedWrapper = fnCreateRealWrapper(oControl, sType, mParams);
60
-
61
- // Check if wrapper needs time to initialize
62
- var oWrapperReadyPromise = oCreatedWrapper.oReadyPromise || Promise.resolve();
63
-
64
- // Wait for wrapper to be ready before setting oRealWrapper
65
- oWrapperReadyPromise.then(function() {
66
- oRealWrapper = oCreatedWrapper;
67
-
68
- // Apply stored state if any
69
- if (oLatestState !== undefined) {
70
- oRealWrapper.setState(oLatestState);
71
- }
49
+ /**
50
+ * Assign the actual control and create the real wrapper.
51
+ * This triggers the creation of the real wrapper, applies any stored state,
52
+ * extends the preliminary wrapper with all methods from the real wrapper,
53
+ * and resolves the promise that queues event handler attachments.
54
+ * @param {sap.ui.core.Control} oControl - The control instance
55
+ */
56
+ setControl: function(oControl) {
57
+ // Create the real wrapper using bound function (already has type and params bound)
58
+ var oCreatedWrapper = fnCreateRealWrapper(oControl);
59
+
60
+ // Check if wrapper needs time to initialize
61
+ var oWrapperReadyPromise = oCreatedWrapper.oReadyPromise || Promise.resolve();
62
+
63
+ // Wait for wrapper to be ready before setting oRealWrapper
64
+ oWrapperReadyPromise.then(function() {
65
+ oRealWrapper = oCreatedWrapper;
66
+
67
+ // Apply stored state if any
68
+ if (oLatestState !== undefined) {
69
+ oRealWrapper.setState(oLatestState);
70
+ }
71
+
72
+ // Extend the preliminary wrapper with all properties from the real wrapper
73
+ // This makes any additional methods (like setSVMWrapperCallbacks) available
74
+ // The nested extend ensures we keep our proxy methods (getState, setState, etc.)
75
+ // while adding new methods from the real wrapper
76
+ extend(oPublicInterface, extend({}, oRealWrapper, oPublicInterface));
77
+
78
+ // Resolve the promise - this triggers all queued attachStateChanged calls
79
+ fnResolveRealWrapperReady(oRealWrapper);
80
+ });
81
+ },
82
+
83
+ /**
84
+ * Attach a state change handler. Uses promise to queue attachment
85
+ * until the real wrapper is available and ready.
86
+ * @param {function} fnHandler - The event handler function
87
+ */
88
+ attachStateChanged: function(fnHandler) {
89
+ // Use promise to defer attachment until real wrapper is available and ready
90
+ oRealWrapperReadyPromise.then(function(oWrapper) {
91
+ oWrapper.attachStateChanged(fnHandler);
92
+ });
93
+ },
72
94
 
73
- // Resolve the promise - this triggers all queued attachStateChanged calls
74
- fnResolveRealWrapperReady(oRealWrapper);
75
- });
76
- },
77
-
78
- /**
79
- * Attach a state change handler. Uses promise to queue attachment
80
- * until the real wrapper is available and ready.
81
- * @param {function} fnHandler - The event handler function
82
- */
83
- attachStateChanged: function(fnHandler) {
84
- // Use promise to defer attachment until real wrapper is available and ready
85
- oRealWrapperReadyPromise.then(function(oWrapper) {
86
- oWrapper.attachStateChanged(fnHandler);
87
- });
88
- },
89
-
90
- /**
91
- * Detach a state change handler. Forwards to real wrapper once available and ready.
92
- * @param {function} fnHandler - The event handler function to detach
93
- */
94
- detachStateChanged: function(fnHandler) {
95
- // Forward to real wrapper once available and ready
96
- oRealWrapperReadyPromise.then(function(oWrapper) {
97
- oWrapper.detachStateChanged(fnHandler);
98
- });
99
- },
95
+ /**
96
+ * Detach a state change handler. Forwards to real wrapper once available and ready.
97
+ * @param {function} fnHandler - The event handler function to detach
98
+ */
99
+ detachStateChanged: function(fnHandler) {
100
+ // Forward to real wrapper once available and ready
101
+ oRealWrapperReadyPromise.then(function(oWrapper) {
102
+ oWrapper.detachStateChanged(fnHandler);
103
+ });
104
+ },
100
105
 
101
106
  /**
102
107
  * Get the local ID of the control.
@@ -116,28 +121,30 @@ sap.ui.define([
116
121
  JSON.stringify(oState) === JSON.stringify(oLatestState);
117
122
  },
118
123
 
119
- /**
120
- * Called after variant is initialized (for SmartTable/SmartChart wrappers).
121
- * Delegates to real wrapper once control is set and ready.
122
- * Note: When this is called, the control always exists (event fired by control),
123
- * so the promise will already be resolved.
124
- */
125
- onAfterVariantInitialise: function() {
126
- oRealWrapperReadyPromise.then(function(oWrapper) {
127
- if (oWrapper.onAfterVariantInitialise) {
128
- oWrapper.onAfterVariantInitialise();
129
- }
130
- });
131
- },
132
-
133
- /**
134
- * Promise that resolves to the bVMConnection flag value once the real wrapper is ready.
135
- * This indicates whether the control is connected to page-wide variant management.
136
- */
137
- oVMConnectionPromise: oRealWrapperReadyPromise.then(function(oWrapper) {
138
- return oWrapper.bVMConnection;
139
- })
124
+ /**
125
+ * Called after variant is initialized (for SmartTable/SmartChart wrappers).
126
+ * Delegates to real wrapper once control is set and ready.
127
+ * Note: When this is called, the control always exists (event fired by control),
128
+ * so the promise will already be resolved.
129
+ */
130
+ onAfterVariantInitialise: function() {
131
+ oRealWrapperReadyPromise.then(function(oWrapper) {
132
+ if (oWrapper.onAfterVariantInitialise) {
133
+ oWrapper.onAfterVariantInitialise();
134
+ }
135
+ });
136
+ },
137
+
138
+ /**
139
+ * Promise that resolves to the bVMConnection flag value once the real wrapper is ready.
140
+ * This indicates whether the control is connected to page-wide variant management.
141
+ */
142
+ oVMConnectionPromise: oRealWrapperReadyPromise.then(function(oWrapper) {
143
+ return oWrapper.bVMConnection;
144
+ })
140
145
  };
146
+
147
+ return oPublicInterface;
141
148
  }
142
149
 
143
150
  return PreliminaryWrapper;
@@ -8,8 +8,16 @@ sap.ui.define([
8
8
  * @param {object} oController - the controller of the current component
9
9
  * @param {object} oFactory - the controlStateWrapperFactory
10
10
  * @param {object} mParams
11
+ <<<<<<< HEAD (274a590a8af0bd77d9f27bbcd5f549d902fa60a9 Merge "[INTERNAL] Translation delivery: commit by LX Lab" in)
11
12
  * @param mParams.managedControlWrappers - array of controlStateWrappers for controls handled by the SVM
12
13
  * (currently also including SFB wrapper - to be removed)
14
+ ||||||| BASE (38a1067f0575c68f4f40a7766314c763b315cee1 [INTERNAL] Translation delivery: commit by LX Lab)
15
+ * @param {array} mParams.managedControlWrappers - array of controlStateWrappers for controls handled by the SVM
16
+ * (currently also including SFB wrapper - to be removed)
17
+ =======
18
+ * @param {array} mParams.managedControlWrappers - array of controlStateWrappers for controls handled by the SVM
19
+ * @param {object} mParams.smartFilterBarWrapper - explicit reference to SmartFilterBarWrapper for special handling
20
+ >>>>>>> CHANGE (61636f588a5388c738612b2d57855c25f45efd46 [FIX] LR: Extension filter values now stored/restored in var)
13
21
  * @returns {object}
14
22
  */
15
23
 
@@ -53,13 +61,15 @@ sap.ui.define([
53
61
  });
54
62
  });
55
63
 
64
+ // Get SmartFilterBarWrapper explicitly from params.
65
+ // This connection is needed because SmartFilterBar provides special callbacks to store/restore state
66
+ // for controls that don't have a direct variant management connection (bVMConnection = false), such as:
67
+ // - Extension filters (custom filters added via app or adaptation extensions)
68
+ // - Multiple views state (selected tab in multi-table/chart scenarios)
69
+ // These controls need their state saved/restored with variants via the SFB's beforeVariantFetch/afterVariantLoad events.
70
+ var oSmartFilterBarWrapper = mParams.smartFilterBarWrapper;
56
71
 
57
-
58
- var oSmartFilterBarWrapper = mParams.managedControlWrappers.find(function(oWrapper){
59
- return oWrapper.setSVMWrapperCallbacks;
60
- });
61
-
62
- // provide callbacks needed for SFB wrapper to store/restore extension state with variant
72
+ // Provide callbacks needed for SFB wrapper to store/restore extension state with variant
63
73
  if (oSmartFilterBarWrapper){
64
74
  // Build array with wrapper + bVMConnection info once all wrappers are ready
65
75
  Promise.all(mParams.managedControlWrappers.map(function(oWrapper){
@@ -856,7 +856,7 @@ sap.ui.define([
856
856
  * @extends sap.ui.core.UIComponent
857
857
  * @abstract
858
858
  * @author SAP SE
859
- * @version 1.108.49
859
+ * @version 1.108.50
860
860
  * @name sap.suite.ui.generic.template.lib.AppComponent
861
861
  */
862
862
  return UIComponent.extend("sap.suite.ui.generic.template.lib.AppComponent", {
@@ -283,9 +283,9 @@ NOITEMS_SMARTTABLE_WITH_FILTER_FOR_SEGMENTEDBUTTON=EiRivej\u00E4ValSuodPerJaTaul
283
283
 
284
284
  NOITEMS_SMARTCHART=Tietoja ei l\u00F6ytynyt.
285
285
 
286
- NOITEMS_LR_SMARTCHART=EiTietValSuodPerJaKaavN\u00E4kVart
286
+ NOITEMS_LR_SMARTCHART=Ei tietoja valitulla suodatinperusteella ja kaavion\u00E4kym\u00E4ll\u00E4.
287
287
 
288
- NOITEMS_SMARTCHART_WITH_FILTER=TietEiL\u00F6ydy. YrS\u00E4\u00E4tSuodParam.
288
+ NOITEMS_SMARTCHART_WITH_FILTER=Tietoja ei l\u00F6ytynyt. Yrit\u00E4 s\u00E4\u00E4t\u00E4\u00E4 suodatusperusteita.
289
289
 
290
290
  SMARTCHART_INITIAL_NODATA=Aseta suodattimet ja aloita.
291
291
 
@@ -47,13 +47,13 @@ ST_STREAM_OPEN_FILE=Ouvrir fichier
47
47
 
48
48
  ST_DRAFT_OWNER=par {0}
49
49
 
50
- ST_DRAFT_ANOTHER_USER=d'un autre utilisateur
50
+ ST_DRAFT_ANOTHER_USER=par un autre utilisateur
51
51
 
52
52
  DATA_PASTE_ERROR_MESSAGE=Impossible de coller. {0} \u00E9l\u00E9ments contiennent des donn\u00E9es non valides.
53
53
 
54
54
  DATA_PASTE_ERROR_CORRECTION_MESSAGE=Corrigez les valeurs indiqu\u00E9es ci-dessous dans votre fichier source.
55
55
 
56
- DATA_PASTE_ERROR_CORRECTION_NOTE=(Note \: ligne/colonne indique la position dans l'ensemble des donn\u00E9es qu vous avez copi\u00E9.)
56
+ DATA_PASTE_ERROR_CORRECTION_NOTE=(Note \: La ligne/colonne indique la position dans l'ensemble des donn\u00E9es que vous avez copi\u00E9.)
57
57
 
58
58
  DATA_PASTE_UNSUPPORTED_FORMAT_MESSAGE=Coller indisponible pour cette table.
59
59
 
@@ -11,7 +11,7 @@ ST_GENERIC_ERROR_LOAD_DATA_TEXT=\u0417\u0430\u043F\u0440\u043E\u0448\u0435\u043D
11
11
 
12
12
  ST_GENERIC_NO_ITEM_SELECTED=\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442.
13
13
 
14
- ST_GENERIC_MULTIPLE_ITEMS_SELECTED=\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u0434\u0438\u043D \u044D\u043B\u0435\u043C\u0435\u043D\u0442.
14
+ ST_GENERIC_MULTIPLE_ITEMS_SELECTED=\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u0434\u043D\u0443 \u043F\u043E\u0437\u0438\u0446\u0438\u044E.
15
15
 
16
16
  ST_DATA_LOSS_TECHNICAL_ERROR_DISCARD=\u0418\u0437-\u0437\u0430 \u0442\u0435\u0445\u043D\u0438\u0447\u0435\u0441\u043A\u043E\u0439 \u043E\u0448\u0438\u0431\u043A\u0438 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F \u043D\u0435 \u0431\u044B\u043B\u0438 \u043F\u0440\u0438\u043C\u0435\u043D\u0435\u043D\u044B. \u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F \u0438 \u0432\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F \u043D\u0430 \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0443\u044E \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443?
17
17
 
@@ -275,11 +275,11 @@ ST_NAV_ERROR_MODEL_READ_FAILED=\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441
275
275
 
276
276
  NEW_OBJECT=\u041E\u0431\u044A\u0435\u043A\u0442 \u0431\u0435\u0437 \u0438\u043C\u0435\u043D\u0438
277
277
 
278
- NOITEMS_SMARTTABLE=\u042D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B.
278
+ NOITEMS_SMARTTABLE=\u041F\u043E\u0437\u0438\u0446\u0438\u0438 \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B.
279
279
 
280
- NOITEMS_SMARTTABLE_WITH_FILTER=\u042D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B \u043F\u043E\u0438\u0441\u043A\u0430 \u0438\u043B\u0438 \u0444\u0438\u043B\u044C\u0442\u0440\u0430.
280
+ NOITEMS_SMARTTABLE_WITH_FILTER=\u041F\u043E\u0437\u0438\u0446\u0438\u0438 \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B \u043F\u043E\u0438\u0441\u043A\u0430 \u0438\u043B\u0438 \u0444\u0438\u043B\u044C\u0442\u0440\u0430.
281
281
 
282
- NOITEMS_SMARTTABLE_WITH_FILTER_FOR_SEGMENTEDBUTTON=\u041D\u0435\u0442 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 \u0434\u043B\u044F \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0445 \u043A\u0440\u0438\u0442\u0435\u0440\u0438\u0435\u0432 \u0444\u0438\u043B\u044C\u0442\u0440\u0430 \u0438 \u0440\u0430\u043A\u0443\u0440\u0441\u0430 \u0442\u0430\u0431\u043B\u0438\u0446\u044B.
282
+ NOITEMS_SMARTTABLE_WITH_FILTER_FOR_SEGMENTEDBUTTON=\u041D\u0435\u0442 \u043F\u043E\u0437\u0438\u0446\u0438\u0439 \u0434\u043B\u044F \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0445 \u043A\u0440\u0438\u0442\u0435\u0440\u0438\u0435\u0432 \u0444\u0438\u043B\u044C\u0442\u0440\u0430 \u0438 \u0440\u0430\u043A\u0443\u0440\u0441\u0430 \u0442\u0430\u0431\u043B\u0438\u0446\u044B.
283
283
 
284
284
  NOITEMS_SMARTCHART=\u0414\u0430\u043D\u043D\u044B\u0435 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u044B.
285
285
 
@@ -307,7 +307,7 @@ ST_GENERIC_DELETE_WITH_WARNING_SUGGESTION_PLURAL=\u041F\u043E\u0434\u0441\u043A\
307
307
 
308
308
  ST_GENERIC_NOT_DELETED_RECORDS=\u041D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u0443\u0434\u0430\u043B\u0438\u0442\u044C {0} \u0438\u0437 {1} \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u0432.
309
309
 
310
- ST_GENERIC_DELETE_ERROR_PLURAL=\u041D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u0443\u0434\u0430\u043B\u0438\u0442\u044C \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0443\u0434\u0430\u043B\u0438\u0442\u044C \u0438\u0445 \u043A\u0430\u0436\u0434\u044B\u0439 \u043F\u043E \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u0438.
310
+ ST_GENERIC_DELETE_ERROR_PLURAL=\u041D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u0443\u0434\u0430\u043B\u0438\u0442\u044C \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0435 \u043F\u043E\u0437\u0438\u0446\u0438\u0438. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0443\u0434\u0430\u043B\u0438\u0442\u044C \u0438\u0445 \u043F\u043E \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u0438.
311
311
 
312
312
  ST_GENERIC_NOT_PROCESSED_RECORDS=\u041D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u0442\u044C {0} \u0438\u0437 {1} \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u0432.
313
313
 
@@ -403,13 +403,13 @@ sap.ui.define(["sap/ui/base/Object",
403
403
  return oHistoryObject;
404
404
  }
405
405
 
406
- function fnInitializeHistory(){
406
+ function fnInitializeHistory(bKeepCurrentIdentity){
407
407
  oCurrentHash = { // The initial instance represents the time before the app was started.
408
408
  iHashChangeCount: 0,
409
409
  backTarget: 0,
410
410
  componentsDisplayed: Object.create(null)
411
411
  };
412
- oCurrentIdentity = null;
412
+ oCurrentIdentity = bKeepCurrentIdentity ? oCurrentIdentity : null;
413
413
  aPreviousHashes = [];
414
414
  if (!bIsRestoring){
415
415
  oRoutingOptions = null;
@@ -2873,7 +2873,7 @@ sap.ui.define(["sap/ui/base/Object",
2873
2873
  fnMakeNavigationFunction("navigationContextNotFound", fnNavigationContextNotFound);
2874
2874
  fnMakeNavigationFunction("navigateToMessageTarget", fnNavigateToMessageTarget);
2875
2875
 
2876
- oNavigationControllerProxy.clearHistory = oNavigationQueue.makeQueuable(fnInitializeHistory);
2876
+ oNavigationControllerProxy.clearHistory = oNavigationQueue.makeQueuable(fnInitializeHistory.bind(null, true));
2877
2877
  oNavigationControllerProxy.suspend = fnSuspend;
2878
2878
  oNavigationControllerProxy.restore = fnInitSession.bind(null, false);
2879
2879
  oNavigationControllerProxy.leave = fnStoreFocusAndGetHistoryObject;
@@ -2981,7 +2981,7 @@ sap.ui.define(["sap/ui/base/Object",
2981
2981
  * @param {sap.suite.ui.generic.template.lib.AppComponent} oAppComponent The AppComponent instance
2982
2982
  * @public
2983
2983
  * @extends sap.ui.base.Object
2984
- * @version 1.108.49
2984
+ * @version 1.108.50
2985
2985
  * @since 1.30.0
2986
2986
  * @alias sap.suite.ui.generic.template.lib.NavigationController
2987
2987
  */
@@ -38,7 +38,7 @@ sap.ui.define(['sap/ui/core/Core', 'sap/ui/core/library','sap/fe/placeholder/lib
38
38
  interfaces: [],
39
39
  controls: [],
40
40
  elements: [],
41
- version: "1.108.49",
41
+ version: "1.108.50",
42
42
  extensions: {
43
43
  //Configuration used for rule loading of Support Assistant
44
44
  "sap.ui.support": {