@sapui5/sap.suite.ui.generic.template 1.130.1 → 1.130.3

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 (81) 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/controller/ControllerImplementation.js +5 -1
  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 +8 -13
  7. package/src/sap/suite/ui/generic/template/ListReport/controller/IappStateHandler.js +18 -2
  8. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_th.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/ControllerImplementation.js +1 -1
  11. package/src/sap/suite/ui/generic/template/ObjectPage/controller/RelatedAppsHandler.js +21 -9
  12. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_es.properties +2 -2
  13. package/src/sap/suite/ui/generic/template/ObjectPage/manifest.json +1 -1
  14. package/src/sap/suite/ui/generic/template/QuickCreate/i18n/i18n_fr_CA.properties +1 -1
  15. package/src/sap/suite/ui/generic/template/QuickCreate/manifest.json +1 -1
  16. package/src/sap/suite/ui/generic/template/QuickView/manifest.json +1 -1
  17. package/src/sap/suite/ui/generic/template/designtime/floorplans/AnalyticalListPage.designtime.js +1 -1
  18. package/src/sap/suite/ui/generic/template/designtime/floorplans/ListReport.designtime.js +1 -1
  19. package/src/sap/suite/ui/generic/template/detailTemplates/i18n/i18n_es.properties +1 -1
  20. package/src/sap/suite/ui/generic/template/fragments/MessagePopover.fragment.xml +1 -1
  21. package/src/sap/suite/ui/generic/template/fragments/SmartFormDataField.fragment.xml +3 -3
  22. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartTableChartCommon.js +1 -1
  23. package/src/sap/suite/ui/generic/template/genericUtilities/polyFill.js +14 -0
  24. package/src/sap/suite/ui/generic/template/js/AnnotationHelper.js +3 -6
  25. package/src/sap/suite/ui/generic/template/lib/AppComponent.js +1 -1
  26. package/src/sap/suite/ui/generic/template/lib/SideEffectUtil.js +22 -7
  27. package/src/sap/suite/ui/generic/template/lib/ai/EasyFilterBarHandler.js +64 -28
  28. package/src/sap/suite/ui/generic/template/lib/ai/FioriAIHandler.js +30 -35
  29. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ar.properties +19 -0
  30. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_bg.properties +19 -0
  31. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ca.properties +19 -0
  32. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cnr.properties +19 -0
  33. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cs.properties +19 -0
  34. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cy.properties +19 -0
  35. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_da.properties +19 -0
  36. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_de.properties +19 -0
  37. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_el.properties +19 -0
  38. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en.properties +19 -0
  39. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_GB.properties +19 -0
  40. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_US_saprigi.properties +20 -0
  41. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_es.properties +19 -0
  42. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_es_MX.properties +19 -0
  43. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_et.properties +19 -0
  44. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fi.properties +19 -0
  45. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fr.properties +19 -0
  46. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fr_CA.properties +21 -2
  47. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hi.properties +19 -0
  48. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hr.properties +19 -0
  49. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hu.properties +21 -2
  50. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_id.properties +19 -0
  51. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_it.properties +19 -0
  52. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_iw.properties +19 -0
  53. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ja.properties +19 -0
  54. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_kk.properties +19 -0
  55. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ko.properties +19 -0
  56. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_lt.properties +19 -0
  57. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_lv.properties +19 -0
  58. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_mk.properties +19 -0
  59. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ms.properties +19 -0
  60. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_nl.properties +19 -0
  61. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_no.properties +19 -0
  62. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pl.properties +19 -0
  63. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pt.properties +19 -0
  64. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pt_PT.properties +19 -0
  65. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ro.properties +19 -0
  66. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ru.properties +19 -0
  67. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sh.properties +19 -0
  68. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sk.properties +19 -0
  69. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sl.properties +19 -0
  70. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sr.properties +19 -0
  71. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sv.properties +19 -0
  72. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_th.properties +19 -0
  73. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_tr.properties +19 -0
  74. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_uk.properties +19 -0
  75. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_vi.properties +19 -0
  76. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_zh_CN.properties +19 -0
  77. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_zh_TW.properties +19 -0
  78. package/src/sap/suite/ui/generic/template/lib/insights/InsightsCardHelper.js +39 -23
  79. package/src/sap/suite/ui/generic/template/lib/multipleViews/MultipleTablesModeHelper.js +2 -1
  80. package/src/sap/suite/ui/generic/template/lib/navigation/NavigationController.js +27 -13
  81. 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.130.1",
3
+ "version": "1.130.3",
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.130.1</version>
10
+ <version>1.130.3</version>
11
11
 
12
12
  <documentation>Library with generic Suite UI templates.</documentation>
13
13
 
@@ -1050,7 +1050,11 @@ sap.ui.define(["sap/fe/navigation/SelectionVariant",
1050
1050
  oState.oIappStateHandler.fnStoreCurrentAppStateAndAdjustURL();
1051
1051
  },
1052
1052
  onAfterApplyTableVariant: function() {
1053
- oState.oIappStateHandler.fnStoreCurrentAppStateAndAdjustURL();
1053
+ // Wait until the previous invocation of storing the app state is completed.
1054
+ // Then, proceed with storing the current app state.
1055
+ setTimeout(function () {
1056
+ oState.oIappStateHandler.fnStoreCurrentAppStateAndAdjustURL();
1057
+ }, 0);
1054
1058
  },
1055
1059
  onAfterChartVariantSave: function(ev) {
1056
1060
  oState.oIappStateHandler.fnStoreCurrentAppStateAndAdjustURL();
@@ -8,7 +8,7 @@
8
8
  "i18n": "i18n/i18n.properties",
9
9
  "applicationVersion": {
10
10
  "__comment": "applicationVersion oder componentversion??",
11
- "version": "1.130.1"
11
+ "version": "1.130.3"
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.130.1"
11
+ "version": "1.130.3"
12
12
  },
13
13
  "title": "Canvas",
14
14
  "description": "Canvas Page",
@@ -547,13 +547,6 @@ sap.ui.define([
547
547
  oState.oMultiEditHandler = new MultiEditHandler(oState, oController, oTemplateUtils);
548
548
  oState.oInsightsHandler = new InsightsHandler(oState, oController, oTemplateUtils);
549
549
 
550
- oTemplateUtils.oServices.oFioriAIHandler && oTemplateUtils.oServices.oFioriAIHandler.getFioriAIEnabledPromise().then(function() {
551
- oState.oEasyFilterBarHandler = new EasyFilterBarHandler(oState, oController, oTemplateUtils);
552
- oState.oEasyFilterBarHandler.initialiseEasyFilterBar();
553
- });
554
-
555
-
556
-
557
550
  var oTemplatePrivateModel = oTemplateUtils.oComponentUtils.getTemplatePrivateModel();
558
551
 
559
552
  oTemplatePrivateModel.setProperty("/listReport/aMissingNavProperties", false);
@@ -696,12 +689,14 @@ sap.ui.define([
696
689
 
697
690
  onSmartFilterBarInitialized: function () {
698
691
  oState.oIappStateHandler.onSmartFilterBarInitialized();
699
- oTemplateUtils.oServices.oFioriAIHandler && oTemplateUtils.oServices.oFioriAIHandler.getFioriAIEnabledPromise().then(function() {
700
- // oEasyFilterBarHandler is already initialized in the controller onInit
701
- // Prepare the metadats upfront so that it is not triggered for each search
702
- oState.oEasyFilterBarHandler && oState.oEasyFilterBarHandler.getEasyFilterSearchMetadata();
703
- oState.oSmartFilterbar.attachFilterChange(function(oEvent) {
704
- oState.oEasyFilterBarHandler.onFilterChange(oEvent);
692
+ // After the SFB is initialized, FE sets default values from different sources. So initialising the EasyFilterBar after the SFB and FE init appState is initialized.
693
+ oTemplateUtils.oServices.oFioriAIHandler && oTemplateUtils.oServices.oFioriAIHandler.getFioriAIEnabledPromise("EasyFilter").then(function() {
694
+ oState.oIappStateHandler.onFEStartupInitialized().then(function() {
695
+ oState.oEasyFilterBarHandler = new EasyFilterBarHandler(oState, oController, oTemplateUtils);
696
+ oState.oEasyFilterBarHandler.initialiseEasyFilterBar();
697
+ oState.oSmartFilterbar.attachFilterChange(function(oEvent) {
698
+ oState.oEasyFilterBarHandler.onFilterChange(oEvent);
699
+ });
705
700
  });
706
701
  });
707
702
  },
@@ -64,6 +64,11 @@ sap.ui.define([
64
64
  onSmartFilterBarInitialized = fnResolve;
65
65
  });
66
66
 
67
+ // Resolve this only after the FE initializes all the filter values from different sources
68
+ var onFEStartupInitializedResolver;
69
+ var onFEStartupInitializedPromise = new Promise(function(fnResolve) {
70
+ onFEStartupInitializedResolver = fnResolve;
71
+ });
67
72
  // *** setup wrappers for control states (start)
68
73
 
69
74
 
@@ -805,7 +810,11 @@ sap.ui.define([
805
810
  // Remark: in case of an appState key in the URL, that could not be analyzed, we should NOT call navigationHandler to parse. In this case, we get an empty object
806
811
  // (in contrast to undefined when there's no appstate key)
807
812
 
808
- return oSmartFilterBarInitializedPromise.then(fnParseUrlAndApplyAppState); // return promise to inform controller, when startup is finished
813
+ return oSmartFilterBarInitializedPromise.then(function() {
814
+ var oStartupFinishedPromise = fnParseUrlAndApplyAppState();
815
+ oStartupFinishedPromise.then(onFEStartupInitializedResolver);
816
+ return oStartupFinishedPromise; // return promise to inform controller, when startup is finished
817
+ });
809
818
  }
810
819
 
811
820
  var sNavType;
@@ -824,6 +833,8 @@ sap.ui.define([
824
833
  oSmartFilterBarInitializedPromise.then(function(){
825
834
  // fallback to navType initial, if appState is given in URL, but could not be analyzed => oState is an empty Object
826
835
  fnAdaptToAppState(oAppData, {} /* URLparameter are irrelevant if restoring from iAppState */, sNavType);
836
+ // Once the FE is initialized, the promise is resolved so that the SFB contains the updated list of filters
837
+ onFEStartupInitializedResolver();
827
838
  });
828
839
  return oSmartFilterBarInitializedPromise; // to inform controller, when startup is finished
829
840
  }
@@ -1075,6 +1086,10 @@ sap.ui.define([
1075
1086
  oDataLoadedWrapper.setState(!!bShouldDataBeLoaded);
1076
1087
  }
1077
1088
 
1089
+ function onFEStartupInitialized(){
1090
+ return onFEStartupInitializedPromise;
1091
+ }
1092
+
1078
1093
  return {
1079
1094
  areDataShownInTable: areDataShownInTable,
1080
1095
  setDataShownInTable: fnSetDataShownInTable,
@@ -1085,7 +1100,8 @@ sap.ui.define([
1085
1100
  onAfterSFBVariantLoad: onAfterSFBVariantLoad,
1086
1101
  applyState: applyState,
1087
1102
  getCurrentAppState: getCurrentAppState, // separation of concerns - only provide state, statePreserver responsible for storing it
1088
- setFiltersUsingUIState : fnSetFiltersUsingUIState
1103
+ setFiltersUsingUIState : fnSetFiltersUsingUIState,
1104
+ onFEStartupInitialized : onFEStartupInitialized
1089
1105
  };
1090
1106
  }
1091
1107
 
@@ -61,7 +61,7 @@ MESSAGE_MULTIPLE_VALUES_S_FORM=\u0E04\u0E38\u0E13\u0E44\u0E21\u0E48\u0E2A\u0E32\
61
61
 
62
62
  OBJECT_NOT_EDITABLE=\u0E44\u0E21\u0E48\u0E2A\u0E32\u0E21\u0E32\u0E23\u0E16\u0E41\u0E01\u0E49\u0E44\u0E02\u0E2D\u0E2D\u0E1A\u0E40\u0E08\u0E04\u0E19\u0E35\u0E49\u0E44\u0E14\u0E49
63
63
 
64
- NODATA_SMARTTABLE_LR=\u0E40\u0E21\u0E37\u0E48\u0E2D\u0E15\u0E49\u0E2D\u0E07\u0E01\u0E32\u0E23\u0E40\u0E23\u0E34\u0E48\u0E21 \u0E43\u0E2B\u0E49\u0E01\u0E33\u0E2B\u0E19\u0E14\u0E1F\u0E34\u0E25\u0E40\u0E15\u0E2D\u0E23\u0E4C\u0E17\u0E35\u0E48\u0E40\u0E01\u0E35\u0E48\u0E22\u0E27\u0E02\u0E49\u0E2D\u0E07\u0E41\u0E25\u0E30\u0E40\u0E25\u0E37\u0E2D\u0E01 "\u0E44\u0E1B"
64
+ NODATA_SMARTTABLE_LR=\u0E40\u0E21\u0E37\u0E48\u0E2D\u0E15\u0E49\u0E2D\u0E07\u0E01\u0E32\u0E23\u0E40\u0E23\u0E34\u0E48\u0E21\u0E15\u0E49\u0E19 \u0E43\u0E2B\u0E49\u0E01\u0E33\u0E2B\u0E19\u0E14\u0E1F\u0E34\u0E25\u0E40\u0E15\u0E2D\u0E23\u0E4C\u0E17\u0E35\u0E48\u0E40\u0E01\u0E35\u0E48\u0E22\u0E27\u0E02\u0E49\u0E2D\u0E07\u0E41\u0E25\u0E49\u0E27\u0E40\u0E25\u0E37\u0E2D\u0E01 "\u0E44\u0E1B"
65
65
 
66
66
 
67
67
  CANCEL_AND_DISCARD=\u0E04\u0E38\u0E13\u0E15\u0E49\u0E2D\u0E07\u0E01\u0E32\u0E23\u0E25\u0E30\u0E17\u0E34\u0E49\u0E07\u0E41\u0E1A\u0E1A\u0E23\u0E48\u0E32\u0E07\u0E19\u0E35\u0E49\u0E2B\u0E23\u0E37\u0E2D\u0E44\u0E21\u0E48?
@@ -8,7 +8,7 @@
8
8
  "i18n": "i18n/i18n.properties",
9
9
  "applicationVersion": {
10
10
  "__comment": "applicationVersion oder componentversion??",
11
- "version": "1.130.1"
11
+ "version": "1.130.3"
12
12
  },
13
13
  "title": "{{TITLE}}",
14
14
  "description": "{{DESCRIPTION}}",
@@ -2410,7 +2410,7 @@ sap.ui.define([
2410
2410
  },
2411
2411
 
2412
2412
  onSummarize: function () {
2413
- oTemplateUtils.oServices.oFioriAIHandler.fioriaiLib.summarize({view: oController.getView()});
2413
+ oTemplateUtils.oServices.oFioriAIHandler.fioriaiLib.summarize.summarize({view: oController.getView()});
2414
2414
  },
2415
2415
 
2416
2416
  onEdit: function (oEvent) {
@@ -98,18 +98,30 @@ sap.ui.define([
98
98
 
99
99
  var oLinksPromise;
100
100
  var bHasRelatedAppSettings = oRelatedAppsSettings && Object.keys(oRelatedAppsSettings).length > 0;
101
+
102
+
101
103
  if (bHasRelatedAppSettings) {
102
- var aSemanticObjects = [{
103
- semanticObject: sCurrentSemObj
104
- }];
105
-
106
- for (var sKey in oRelatedAppsSettings) {
107
- if (sKey) {
108
- aSemanticObjects.push({
109
- semanticObject: oRelatedAppsSettings[sKey].semanticObject
110
- });
104
+ // Create a set to hold string data types
105
+ const oSemanticObjectSet = new Set();
106
+
107
+ // Add the current semantic object into the set
108
+ oSemanticObjectSet.add(sCurrentSemObj);
109
+
110
+ // Iterate through oRelatedAppSettings and add all related apps into the set
111
+ for (const sKey in oRelatedAppsSettings) {
112
+ if (oRelatedAppsSettings.hasOwnProperty(sKey)) {
113
+ const sSemanticObject = oRelatedAppsSettings[sKey].semanticObject;
114
+ oSemanticObjectSet.add(sSemanticObject); // Set will handle duplicates
111
115
  }
112
116
  }
117
+
118
+ // Create an array from the set
119
+ let aSemanticObjects = Array.from(oSemanticObjectSet);
120
+
121
+ // Use the map method to convert the array of strings into an array of objects
122
+ aSemanticObjects = aSemanticObjects.map(sSemObj => ({ semanticObject: sSemObj }));
123
+
124
+ // aSemanticObjects now contains the desired format
113
125
  oLinksPromise = oNavigationService.getLinks(aSemanticObjects);
114
126
  } else {
115
127
  var oAppComponent = oController.getOwnerComponent().getAppComponent();
@@ -157,9 +157,9 @@ HIDE_SIDE_CONTENT=Ocultar detalles
157
157
 
158
158
  DELETE_SELECTED_ITEM=\u00BFDesea eliminar el elemento?
159
159
 
160
- DELETE_SELECTED_ITEM_WITH_OBJECTINFO=\u00BFEliminar el elemento {1} ({2})?
160
+ DELETE_SELECTED_ITEM_WITH_OBJECTINFO=\u00BFBorrar el elemento {1} ({2})?
161
161
 
162
- DELETE_SELECTED_ITEM_WITH_OBJECTTITLE=\u00BFEliminar el elemento {0}?
162
+ DELETE_SELECTED_ITEM_WITH_OBJECTTITLE=\u00BFBorrar el elemento {0}?
163
163
 
164
164
  DELETE_SELECTED_ITEMS=\u00BFDesea eliminar los elementos seleccionados?
165
165
 
@@ -6,7 +6,7 @@
6
6
  "type": "component",
7
7
  "i18n": "i18n/i18n.properties",
8
8
  "applicationVersion": {
9
- "version": "1.130.1"
9
+ "version": "1.130.3"
10
10
  },
11
11
  "title": "{{TITLE}}",
12
12
  "description": "{{DESCRIPTION}}",
@@ -15,7 +15,7 @@ QuickCreate_No_Created_Object=L'objet a \u00E9t\u00E9 cr\u00E9\u00E9 mais il est
15
15
 
16
16
  QuickCreate_CreateButtonText=Cr\u00E9er
17
17
 
18
- Error_Severity_Error=Erreur\: {0}\n\n
18
+ Error_Severity_Error=Erreur\u00A0\: {0}\n\n
19
19
 
20
20
  Error_Severity_Abort=Interruption\: {0}\n\n
21
21
 
@@ -6,7 +6,7 @@
6
6
  "type": "component",
7
7
  "i18n": "i18n/i18n.properties",
8
8
  "applicationVersion": {
9
- "version": "1.130.1"
9
+ "version": "1.130.3"
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.130.1"
9
+ "version": "1.130.3"
10
10
  },
11
11
  "title": "{{TITLE}}",
12
12
  "description": "{{DESCRIPTION}}",
@@ -39,7 +39,7 @@ sap.ui.define(["sap/suite/ui/generic/template/designtime/utils/designtimeHelper"
39
39
  properties: ["visible", "icon", "activeIcon", "type", "tooltip"]
40
40
  },
41
41
  "sap.ui.comp.smartfilterbar.SmartFilterBar": {
42
- properties: ["liveMode", "showClearOnFB", "showFilterConfiguration", "showRestoreOnFB"]
42
+ properties: ["liveMode", "showClearOnFB", "showFilterConfiguration", "showRestoreOnFB", "considerPresentationVariant"]
43
43
  },
44
44
  "sap.m.Table": {
45
45
  properties: ["growingThreshold"]
@@ -16,7 +16,7 @@ sap.ui.define(["sap/suite/ui/generic/template/designtime/utils/designtimeHelper"
16
16
  properties: ["fitContent"]
17
17
  },
18
18
  "sap.ui.comp.smartfilterbar.SmartFilterBar": {
19
- properties: ["liveMode"]
19
+ properties: ["liveMode", "considerPresentationVariant"]
20
20
  },
21
21
  "sap.ui.comp.smarttable.SmartTable": {
22
22
  properties: ["useExportToExcel"],
@@ -9,4 +9,4 @@ MESSAGE_BUTTON_TYPE=Mensajes
9
9
 
10
10
  ST_DETAIL_TITLE_VALIDATION=Mensajes de validaci\u00F3n
11
11
 
12
- ST_DETAIL_TITLE_DELETE=Eliminar
12
+ ST_DETAIL_TITLE_DELETE=Borrar
@@ -5,7 +5,7 @@
5
5
  <MessageItem description="{msg>description}" type="{msg>type}" title="{msg>message}"
6
6
  subtitle="{parts:[{path: 'msg>id'}, {path: 'msg>controlIds'}, {path: 'msg>additionalText'}, {path: 'helper>/isPopoverOpen'}, {path: 'helper>/heartBeat'}], formatter: '.getSubtitle'}"
7
7
  longtextUrl="{msg>descriptionUrl}"
8
- markupDescription="true"
8
+ markupDescription="{helper>/isAIErrorExplanationEnabled}"
9
9
  activeTitle="{parts:[{path: 'msg>id'}, {path: 'msg>controlIds'}, {path: 'helper>/isPopoverOpen'}], formatter: '.isPositionable'}"
10
10
  groupName="{= ${helper>/messageToGroupName}[${msg>id}] }">
11
11
  <Link
@@ -2,7 +2,7 @@
2
2
  xmlns:sfo="sap.ui.comp.smartform" xmlns:smartMultiInput="sap.ui.comp.smartmultiinput" xmlns:layoutData="sap.ui.layout" xmlns:fe="sap.suite.ui.generic.template.genericUtilities"
3
3
  xmlns:custom="http://schemas.sap.com/sapui5/extension/sap.ui.core.CustomData/1"
4
4
  xmlns:template="http://schemas.sap.com/sapui5/extension/sap.ui.core.template/1"
5
- template:require="{AH: 'sap/suite/ui/generic/template/js/AnnotationHelper', AHModel: 'sap/ui/model/odata/AnnotationHelper', StableIdHelper: 'sap/suite/ui/generic/template/js/StableIdHelper'}">
5
+ template:require="{AH: 'sap/suite/ui/generic/template/js/AnnotationHelper', AHModel: 'sap/ui/model/odata/AnnotationHelper', StableIdHelper: 'sap/suite/ui/generic/template/js/StableIdHelper', SideEffectUtil: 'sap/suite/ui/generic/template/lib/SideEffectUtil'}">
6
6
 
7
7
  <!-- @classdesc @name: Name: sap.suite.ui.generic.template.fragments.SmartFormDataField.fragment.xml
8
8
  @description: This fragment contains label value pairs for the smart form
@@ -35,7 +35,7 @@
35
35
  visible="{path: 'dataField>', formatter: 'AH.getVisibiltyBasedOnImportanceAndHidden'}"
36
36
  binding="{path: 'dataField>Target'}, formatter: 'AH.getNavigationPathWithExpand'}">
37
37
  <fe:customData>
38
- <core:CustomData key="SideEffects" value="{parts: [{path: 'entitySet>'}, {path: 'dataField>'}], formatter: 'AH.getPropsForLinkFields'}"/>
38
+ <core:CustomData key="SideEffects" value="{parts: [{path: 'entitySet>'}, {path: 'dataField>'}, {path: 'contact>fn/Path'}], formatter: 'SideEffectUtil.getPropsForLinkFields'}"/>
39
39
  <core:CustomData key="Location" value="Section" />
40
40
  <core:CustomData key="contactDetails" value="{= ${path: 'contact>', formatter: 'AH.getCustomDataForContactPopup'}}"/>
41
41
  </fe:customData>
@@ -121,7 +121,7 @@
121
121
  press="._templateEventHandlers.onDataFieldWithIntentBasedNavigation"
122
122
  wrapping="true">
123
123
  <fe:customData>
124
- <core:CustomData key="SideEffects" value="{parts: [{path: 'entitySet>'}, {path: 'dataField>'}], formatter: 'AH.getPropsForLinkFields'}"/>
124
+ <core:CustomData key="SideEffects" value="{parts: [{path: 'entitySet>'}, {path: 'dataField>'}], formatter: 'SideEffectUtil.getPropsForLinkFields'}"/>
125
125
  <core:CustomData key="SemanticObject" value="{path: 'dataField>SemanticObject', formatter: 'AHModel.format'}" />
126
126
  <core:CustomData key="Action" value="{path: 'dataField>Action', formatter: 'AHModel.format'}" />
127
127
  </fe:customData>
@@ -82,7 +82,7 @@ sap.ui.define([
82
82
  getState: fnGetState,
83
83
  setState: fnSetState,
84
84
  getLocalId: fnGetLocalId,
85
- bVMConnection: false,
85
+ bVMConnection: oControl && oControl.getSmartVariant && !!oControl.getSmartVariant(),
86
86
  attachStateChanged: fnAttachStateChanged
87
87
  };
88
88
  }
@@ -28,6 +28,20 @@ sap.ui.define([
28
28
  return null;
29
29
  };
30
30
  }
31
+ /**
32
+ * PolyFill for Promise.withResolvers
33
+ */
34
+ if (!Promise.withResolvers) {
35
+ Promise.withResolvers = function() {
36
+ var resolvers = {};
37
+ var promise = new Promise(function(resolve, reject) {
38
+ resolvers.resolve = resolve;
39
+ resolvers.reject = reject;
40
+ });
41
+ Object.assign(promise, resolvers);
42
+ return promise;
43
+ };
44
+ }
31
45
  /**
32
46
  * PolyFill for nextSiblingElement
33
47
  */
@@ -11,10 +11,10 @@ sap.ui.define(["sap/ui/model/odata/AnnotationHelper",
11
11
  "sap/ui/core/library",
12
12
  "sap/suite/ui/generic/template/genericUtilities/metadataAnalyser",
13
13
  "sap/ui/base/ManagedObject",
14
- "sap/suite/ui/generic/template/lib/SideEffectUtil",
15
- "sap/suite/ui/generic/template/js/RuntimeFormatters" // just to make sure that it is loaded
14
+ "sap/base/util/isEmptyObject",
15
+ "sap/suite/ui/generic/template/js/RuntimeFormatters"// just to make sure that it is loaded
16
16
  ], function (AnnotationHelperModel, AnnotationHelperModelBasics, SmartField, FeLogger, formatMessage, deepExtend, StableIdHelper, utils, Device,
17
- SapMLibrary, SapCoreLibrary, metadataAnalyser, ManagedObject, SideEffectUtil) {
17
+ SapMLibrary, SapCoreLibrary, metadataAnalyser, ManagedObject, isEmptyObject) {
18
18
  "use strict";
19
19
 
20
20
  // shortcut for sap.ui.core.ValueState
@@ -384,9 +384,6 @@ sap.ui.define(["sap/ui/model/odata/AnnotationHelper",
384
384
  getCustomDataForContactPopup: function (oContactDetails) {
385
385
  return ((JSON.stringify(oContactDetails)).replace(/\}/g, "\\}").replace(/\{/g, "\\{")); //check bindingParser.escape
386
386
  },
387
- getPropsForLinkFields: function(oEntitySet, oTarget) {
388
- return SideEffectUtil.getPropsForLinkFields(oEntitySet, oTarget);
389
- },
390
387
  checkIsEmailAddress: function (oInterface, sEntityType, oDataField) {
391
388
  var oMetaModel = oInterface.getInterface(1).getModel();
392
389
  var sPath = oInterface.getInterface(1).getPath() + '/Value';
@@ -938,7 +938,7 @@ sap.ui.define([
938
938
  * @public
939
939
  * @extends sap.ui.core.UIComponent
940
940
  * @author SAP SE
941
- * @version 1.130.1
941
+ * @version 1.130.3
942
942
  * @name sap.suite.ui.generic.template.lib.AppComponent
943
943
  */
944
944
  var oAppComponent = UIComponent.extend("sap.suite.ui.generic.template.lib.AppComponent", {
@@ -138,11 +138,14 @@ sap.ui.define(["sap/suite/ui/generic/template/js/AnnotationHelper",
138
138
  * Returns the EntitySet name, EntityType name, PropertyName for a given link field
139
139
  * @param {sap.ui.model.odata.ODataMetaModel.EntitySet} oEntitySet
140
140
  * @param {object} oTarget
141
+ * @param {string} sFieldName
141
142
  */
142
- function fnGetPropsForLinkFields (oEntitySet, oTarget) {
143
- var sLinkProperty = oTarget && oTarget.Value && oTarget.Value.Path;
144
- if (!sLinkProperty) {
145
- return null;
143
+ function fnGetPropsForLinkFields (oEntitySet, oTarget, sFieldName) {
144
+ var sLinkProperty;
145
+ if (oTarget && oTarget.Value && oTarget.Value.Path){
146
+ sLinkProperty = oTarget.Value.Path;
147
+ } else {
148
+ sLinkProperty = oTarget.Target.AnnotationPath.split("/")[0] + "/" + sFieldName;
146
149
  }
147
150
  var oCustomData = {
148
151
  "sEntitySetName": oEntitySet.name,
@@ -174,6 +177,7 @@ sap.ui.define(["sap/suite/ui/generic/template/js/AnnotationHelper",
174
177
  return;
175
178
  }
176
179
 
180
+ var oControl = oLink;
177
181
  var oEntityType = oMetaModel.getODataEntityType(sEntityTypeName);
178
182
  var oEntitySet = oMetaModel.getODataEntitySet(sEntitySetName);
179
183
  var oProperty = metadataAnalyser.getPropertyMetadata(oMetaModel, sEntityTypeName, sLinkProperty);
@@ -186,9 +190,20 @@ sap.ui.define(["sap/suite/ui/generic/template/js/AnnotationHelper",
186
190
  }
187
191
  };
188
192
 
189
- //The method SharedUtil.applyFieldGroupIDs takes in the control and its metadata, reads the Side Effect annotations configured for it
190
- //and assigns the fieldGroupID accordingly.
191
- SharedUtil.applyFieldGroupIDs(oLink, oMetaData);
193
+ if (sLinkProperty.includes("/")){
194
+ while (!oControl.isA("sap.ui.comp.smartform.Group")) {
195
+ oControl = oControl.getParent();
196
+ }
197
+ //The method SharedUtil.applyFieldGroupIDs takes in the control and its metadata
198
+ //It then reads the Side Effect annotations configured for it, calculates fieldGroupIds and assigns them to the field
199
+
200
+ //For navigation path link fields, we pass the oLink's parent Group control's binding context when calculating the fieldGroupIds
201
+ //This makes sure the calculated fieldGroupIds are consistent with the other source fields
202
+ SharedUtil.applyFieldGroupIDs(oLink, oMetaData, null, oControl.getBindingContext());
203
+ } else {
204
+ //For non navigation path link fields, we just pass the oLink along with its metadata
205
+ SharedUtil.applyFieldGroupIDs(oLink, oMetaData);
206
+ }
192
207
  }
193
208
  }
194
209
 
@@ -2,8 +2,9 @@ sap.ui.define([
2
2
  "sap/ui/base/Object",
3
3
  "sap/base/util/extend",
4
4
  "sap/suite/ui/generic/template/lib/filterHelper",
5
- "sap/suite/ui/generic/template/genericUtilities/FeLogger"
6
- ], function(BaseObject, extend, filterHelper, FeLogger) {
5
+ "sap/suite/ui/generic/template/genericUtilities/FeLogger",
6
+ "sap/ui/model/FilterOperator"
7
+ ], function(BaseObject, extend, filterHelper, FeLogger, FilterOperator) {
7
8
  'use strict';
8
9
 
9
10
  /*
@@ -32,19 +33,11 @@ sap.ui.define([
32
33
  return Promise.resolve(oEasyFilterMetadata);
33
34
  } else {
34
35
  return new Promise(function(fnResolve) {
35
- // In case the smart filter bar is already initialized then do not use "attachInitialized" as this event will never get triggered again
36
- if (oState.oSmartFilterbar.isInitialised()) {
36
+ oState.oIappStateHandler.onFEStartupInitialized().then(function() {
37
37
  fnPrepareSearchMetadata().then(function(oMetadata){
38
- fnResolve(oMetadata);
39
- }
40
- );
41
- } else {
42
- oState.oSmartFilterbar.attachInitialized(function() {
43
- fnPrepareSearchMetadata().then(function(oMetadata) {
44
- fnResolve(oMetadata);
45
- });
46
- },this);
47
- }
38
+ fnResolve(oMetadata);
39
+ });
40
+ });
48
41
  });
49
42
  }
50
43
  }
@@ -56,33 +49,48 @@ sap.ui.define([
56
49
  function fnPrepareSearchMetadata() {
57
50
 
58
51
  var aPromise = [];
52
+ var oEditStateFilterItem;
53
+ var oDefaultValuesForEasyFilter = {};
59
54
  var oOwnerFilterControl = oState.oSmartFilterbar;
60
55
  var oSFBModel = oOwnerFilterControl.getModel();
61
56
  var oSFBMetaModel = oSFBModel.getMetaModel();
62
- var oEditStateFilterItem;
57
+
63
58
  var sEntitySet = oController.getOwnerComponent().getEntitySet();
64
- var sTokenType = "ValueHelp"; // Other values are "Calendar" | "Time" | "MenuWithCheckBox"
65
59
 
66
60
  var mFilterProperties = {}; // todo : Add the properties from navigation entites
67
61
  var oEntityType = oTemplateUtils.oCommonUtils.getMetaModelEntityType(sEntitySet);
68
62
  oEntityType.property.map(function (oProperty) {
63
+ var sTokenType = "ValueHelp"; // Other values are "Calendar" | "Time" | "MenuWithCheckBox"
69
64
  if (filterHelper.isPropertyFilterable(oProperty)) {
70
- var bIsCodeListRequired = "";
65
+
66
+ var bIsCodeListRequired;
71
67
  oProperty.extensions && oProperty.extensions.forEach(function(oExtension) {
72
68
  if (oExtension.name === "value-list" && oExtension.value === "fixed-values") {
73
69
  sTokenType = "MenuWithCheckBox";
74
70
  bIsCodeListRequired = true;
75
71
  }
76
72
  });
73
+
74
+ // Calculate the token type based on the property type and display format
75
+ // It will be better if this is done at the control level
76
+ if ((oProperty.type === "Edm.DateTime" && oProperty["sap:display-format"] === "Date") ||
77
+ (oProperty.type === "Edm.String" && oProperty["com.sap.vocabularies.Common.v1.IsCalendarDate"] && oProperty["com.sap.vocabularies.Common.v1.IsCalendarDate"].Bool === "true")) {
78
+ sTokenType = "Calendar";
79
+ } else if (oProperty.type === "Edm.DateTimeOffset") {
80
+ sTokenType = "Time";
81
+ }
82
+
77
83
  mFilterProperties[oProperty.name] = {
78
84
  name: oProperty.name,
79
85
  //label: oProperty.label, Name is added from the filter item control
80
86
  dataType: oProperty.type,
87
+ defaultValue : {}, // Fill values from FLP user defaults , SV or other sources
81
88
  filterable: true,
82
89
  sortable: false,
83
90
  codeList : bIsCodeListRequired,
84
91
  type: sTokenType,
85
- required: oProperty["sap:required-in-filter"] ? true : false
92
+ unit: oProperty["sap:unit"] || "",
93
+ required: oProperty["sap:required-in-filter"] === "true" ? true : false
86
94
  };
87
95
  }
88
96
  });
@@ -92,12 +100,46 @@ sap.ui.define([
92
100
  entitySet: sEntitySet,
93
101
  fields : []
94
102
  };
95
-
103
+ oDefaultValuesForEasyFilter = oOwnerFilterControl.getFilterData() || {};
96
104
  oOwnerFilterControl.getAllFilterItems().forEach(function (oFilterItem) {
97
105
  //check if the filter item from the filter control is a property of the entity type , if then push it to the easy filter metadata
98
106
  // todo : Add the properties from navigation entites
99
107
  var oFilterItemForQuery = mFilterProperties[oFilterItem.getName()];
100
108
  if (oFilterItemForQuery) {
109
+ var oDefaultFilterValue = oDefaultValuesForEasyFilter[oFilterItem.getName()];
110
+ if (oDefaultFilterValue) {
111
+ var aValues = [];
112
+ if (oDefaultFilterValue.ranges) {
113
+ aValues = oDefaultFilterValue.ranges.map(function(oRange) {
114
+ if (oRange.exclude === false) {
115
+ if (oRange.operation === "BT") {
116
+ return {
117
+ operator: FilterOperator.BT,
118
+ selectedValues: [{ value1: oRange.value1, value2: oRange.value2 }]
119
+ };
120
+ } else {
121
+ return {
122
+ operator: oRange.operation,
123
+ selectedValues: [oRange.value1]
124
+ };
125
+ }
126
+ } else {
127
+ return {
128
+ operator: FilterOperator.NE,
129
+ selectedValues: [oRange.value1]
130
+ };
131
+ }
132
+ });
133
+ } else { // In cases where the default value is coming from the FLP user defaults and does not have ranges and the value is a single value
134
+ aValues = [
135
+ {
136
+ operator: FilterOperator.EQ,
137
+ selectedValues: [oDefaultFilterValue]
138
+ }
139
+ ];
140
+ }
141
+ oFilterItemForQuery.defaultValue = aValues;
142
+ }
101
143
  oFilterItemForQuery.label = oFilterItem.getLabel();
102
144
  // codeList is set to true for fixed value list and codelist is fetched
103
145
  if (oFilterItemForQuery.codeList) {
@@ -127,7 +169,6 @@ sap.ui.define([
127
169
  if (oTemplateUtils.oComponentUtils.isDraftEnabled()) {
128
170
  var oEditStateControl = oController.byId("editStateFilter");
129
171
  if (oEditStateControl) {
130
- sTokenType = "MenuWithCheckBox";
131
172
  var oEditingStatusCodeList = oEditStateControl.getItems().map(function(oItem) {
132
173
  return {
133
174
  value : oItem.getKey(),
@@ -141,7 +182,7 @@ sap.ui.define([
141
182
  filterable: true,
142
183
  required: false,
143
184
  sortable: false,
144
- type: sTokenType,
185
+ type: "MenuWithCheckBox",
145
186
  codeList : oEditingStatusCodeList
146
187
  };
147
188
  oEasyFilterMetadata.fields.push(oEditStateFilterMetadata);
@@ -307,7 +348,7 @@ sap.ui.define([
307
348
  var sEntitySet = oController.getOwnerComponent().getEntitySet();
308
349
  oEasyFilterMetadataPromise.then((oEasyFilterMetadata) => {
309
350
  oEasyFilter.setContextPath(sEntitySet);
310
- oEasyFilter.setAppId(oController.getOwnerComponent().getAppComponent().getManifestEntry("sap.app")).id;
351
+ oEasyFilter.setAppId(oController.getOwnerComponent().getAppComponent().getManifestEntry("sap.app").id);
311
352
  oEasyFilter.setFilterBarMetadata(oEasyFilterMetadata.fields);
312
353
  oEasyFilter.easyfilter = oTemplateUtils.oServices.oFioriAIHandler.fioriaiLib.EasyFilter;
313
354
  });
@@ -372,13 +413,8 @@ sap.ui.define([
372
413
  var oSmartFilterbar = oState.oSmartFilterbar;
373
414
  fnValueHelpPromiseResolve = oEvent.getParameter("resolve");
374
415
  oSmartFilterbar.associateValueLists();
375
- var oInputField = oSmartFilterbar.getAllFilterItems().find(function(oFilterItem) {
376
- if (oFilterItem.getName() === oEvent.getParameter("key")) {
377
- return oFilterItem;
378
- }
379
- });
380
416
  try {
381
- oInputField.getControl().fireValueHelpRequest();
417
+ oSmartFilterbar.openValueHelpRequestForFilterItem(oEvent.getParameter("key"));
382
418
  } catch (error) {
383
419
  oLogger.error("Value help cannot be triggered for the field " + oEvent.getParameter("key"));
384
420
  }