@sapui5/sap.suite.ui.generic.template 1.129.0 → 1.130.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 (100) hide show
  1. package/package.json +4 -3
  2. package/src/sap/suite/ui/generic/template/.library +5 -1
  3. package/src/sap/suite/ui/generic/template/AnalyticalListPage/Component.js +1 -1
  4. package/src/sap/suite/ui/generic/template/AnalyticalListPage/controller/VisualFilterDialogController.js +1 -1
  5. package/src/sap/suite/ui/generic/template/AnalyticalListPage/manifest.json +1 -1
  6. package/src/sap/suite/ui/generic/template/Canvas/manifest.json +1 -1
  7. package/src/sap/suite/ui/generic/template/ListReport/Component.js +1 -1
  8. package/src/sap/suite/ui/generic/template/ListReport/controller/ControllerImplementation.js +22 -11
  9. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_bg.properties +3 -3
  10. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_hu.properties +1 -1
  11. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_th.properties +1 -1
  12. package/src/sap/suite/ui/generic/template/ListReport/manifest.json +5 -2
  13. package/src/sap/suite/ui/generic/template/ListReport/view/fragments/DefaultVariant.fragment.xml +7 -8
  14. package/src/sap/suite/ui/generic/template/ListReport/view/fragments/MultipleViewsSingleTableMode.fragment.xml +4 -1
  15. package/src/sap/suite/ui/generic/template/ObjectPage/Component.js +1 -1
  16. package/src/sap/suite/ui/generic/template/ObjectPage/manifest.json +1 -1
  17. package/src/sap/suite/ui/generic/template/ObjectPage/templateSpecificPreparationHelper.js +90 -42
  18. package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/MultipleViewsSingleTableMode.fragment.xml +3 -0
  19. package/src/sap/suite/ui/generic/template/QuickCreate/manifest.json +1 -1
  20. package/src/sap/suite/ui/generic/template/QuickView/manifest.json +1 -1
  21. package/src/sap/suite/ui/generic/template/designtime/controls/SmartTable.designtime.js +379 -0
  22. package/src/sap/suite/ui/generic/template/designtime/{AnalyticalListPage.designtime.js → floorplans/AnalyticalListPage.designtime.js} +3 -3
  23. package/src/sap/suite/ui/generic/template/designtime/{ListReport.designtime.js → floorplans/ListReport.designtime.js} +3 -3
  24. package/src/sap/suite/ui/generic/template/designtime/{ObjectPage.designtime.js → floorplans/ObjectPage.designtime.js} +4 -5
  25. package/src/sap/suite/ui/generic/template/designtime/utils/designtimeHelper.js +119 -96
  26. package/src/sap/suite/ui/generic/template/designtime/utils/designtimeUtils.js +395 -0
  27. package/src/sap/suite/ui/generic/template/fragments/EasyFilter.fragment.xml +12 -17
  28. package/src/sap/suite/ui/generic/template/fragments/MessagePage.controller.js +16 -0
  29. package/src/sap/suite/ui/generic/template/fragments/MessagePopover.fragment.xml +16 -2
  30. package/src/sap/suite/ui/generic/template/fragments/SmartFormDataField.fragment.xml +2 -0
  31. package/src/sap/suite/ui/generic/template/genericUtilities/Link.js +9 -2
  32. package/src/sap/suite/ui/generic/template/js/AnnotationHelper.js +8 -4
  33. package/src/sap/suite/ui/generic/template/lib/AppComponent.js +10 -3
  34. package/src/sap/suite/ui/generic/template/lib/CommonEventHandlers.js +0 -42
  35. package/src/sap/suite/ui/generic/template/lib/CommonUtils.js +6 -1
  36. package/src/sap/suite/ui/generic/template/lib/MessageButtonHelper.js +11 -7
  37. package/src/sap/suite/ui/generic/template/lib/RetryAfterHandler.js +249 -0
  38. package/src/sap/suite/ui/generic/template/lib/ShareUtils.js +1 -1
  39. package/src/sap/suite/ui/generic/template/lib/SideEffectUtil.js +64 -3
  40. package/src/sap/suite/ui/generic/template/lib/StableIdDefinition.js +7 -0
  41. package/src/sap/suite/ui/generic/template/lib/ai/EasyFilterBarHandler.js +210 -74
  42. package/src/sap/suite/ui/generic/template/lib/ai/ErrorExplanationHelper.js +47 -0
  43. package/src/sap/suite/ui/generic/template/lib/ai/FioriAIHandler.js +10 -3
  44. package/src/sap/suite/ui/generic/template/lib/i18n/i18n.properties +31 -0
  45. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ar.properties +2 -0
  46. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_bg.properties +2 -0
  47. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ca.properties +2 -0
  48. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cnr.properties +2 -0
  49. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cs.properties +2 -0
  50. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cy.properties +2 -0
  51. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_da.properties +2 -0
  52. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_de.properties +3 -1
  53. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_el.properties +2 -0
  54. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en.properties +2 -0
  55. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_GB.properties +2 -0
  56. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_US_saprigi.properties +1 -0
  57. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_es.properties +4 -2
  58. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_es_MX.properties +2 -0
  59. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_et.properties +2 -0
  60. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fi.properties +2 -0
  61. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fr.properties +2 -0
  62. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fr_CA.properties +2 -0
  63. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hi.properties +2 -0
  64. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hr.properties +3 -1
  65. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hu.properties +2 -0
  66. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_id.properties +2 -0
  67. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_it.properties +2 -0
  68. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_iw.properties +2 -0
  69. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ja.properties +2 -0
  70. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_kk.properties +2 -0
  71. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ko.properties +2 -0
  72. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_lt.properties +2 -0
  73. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_lv.properties +2 -0
  74. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_mk.properties +2 -0
  75. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ms.properties +2 -0
  76. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_nl.properties +2 -0
  77. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_no.properties +2 -0
  78. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pl.properties +2 -0
  79. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pt.properties +2 -0
  80. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pt_PT.properties +2 -0
  81. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ro.properties +2 -0
  82. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ru.properties +2 -0
  83. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sh.properties +2 -0
  84. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sk.properties +2 -0
  85. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sl.properties +2 -0
  86. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sr.properties +2 -0
  87. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sv.properties +2 -0
  88. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_th.properties +2 -0
  89. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_tr.properties +2 -0
  90. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_uk.properties +2 -0
  91. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_vi.properties +2 -0
  92. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_zh_CN.properties +2 -0
  93. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_zh_TW.properties +2 -0
  94. package/src/sap/suite/ui/generic/template/lib/navigation/NavigationController.js +5 -3
  95. package/src/sap/suite/ui/generic/template/library.js +3 -1
  96. package/src/sap/suite/ui/generic/template/listTemplates/fragments/MultipleViewsSingleTableMode.fragment.xml +6 -2
  97. package/src/sap/suite/ui/generic/template/manifestMerger/ChangePageConfiguration.js +28 -23
  98. package/src/sap/suite/ui/generic/template/manifestMerger/MergerUtil.js +6 -6
  99. package/src/sap/suite/ui/generic/template/themes/base/base.less +0 -4
  100. package/ui5.yaml +1 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.suite.ui.generic.template",
3
- "version": "1.129.0",
3
+ "version": "1.130.1",
4
4
  "description": "SAPUI5 Library sap.suite.ui.generic.template",
5
5
  "keywords": [
6
6
  "sapui5",
@@ -16,6 +16,7 @@
16
16
  "testsuite-qunit" : "ui5 serve --config ./ui5-local.yaml --open \"/test-resources/sap/suite/ui/generic/template/qunit/testsuite.qunit.html\""
17
17
  },
18
18
  "devDependencies": {
19
- "sonarqube-scanner": "^2.8.1"
19
+ "sonarqube-scanner": "^2.8.1",
20
+ "@sap/ux-ui5-tooling": "latest"
20
21
  }
21
- }
22
+ }
@@ -7,7 +7,7 @@
7
7
 
8
8
  (c) Copyright 2009-2015 SAP SE. All rights reserved
9
9
  </copyright>
10
- <version>1.129.0</version>
10
+ <version>1.130.1</version>
11
11
 
12
12
  <documentation>Library with generic Suite UI templates.</documentation>
13
13
 
@@ -65,6 +65,9 @@
65
65
  <dependency>
66
66
  <libraryName>sap.fe.placeholder</libraryName>
67
67
  </dependency>
68
+ <dependency>
69
+ <libraryName>sap.fe.controls</libraryName>
70
+ </dependency>
68
71
  <dependency>
69
72
  <libraryName>sap.cards.ap.common</libraryName>
70
73
  </dependency>
@@ -94,6 +97,7 @@
94
97
  <exclude name="sap.fe." external="true"/>
95
98
  <exclude name="sap.tnt." external="true"/>
96
99
  <exclude name="sap.insights." external="true"/>
100
+ <exclude name="sap.cards.ap." external="true"/>
97
101
  <exclude name="*" external="true"/> <!-- exclude files within current folder -->
98
102
  </jscoverage>
99
103
  <releasenotes
@@ -59,7 +59,7 @@ sap.ui.define(["sap/ui/core/mvc/OverrideExecution",
59
59
  },
60
60
  oComponentData: { // data defined by component (i.e. not to be overridden by manifest
61
61
  templateName: "sap.suite.ui.generic.template.AnalyticalListPage.view.AnalyticalListPage",
62
- designtimePath: "sap/suite/ui/generic/template/designtime/AnalyticalListPage.designtime"
62
+ designtimePath: "sap/suite/ui/generic/template/designtime/floorplans/AnalyticalListPage.designtime"
63
63
  },
64
64
  init: function() {
65
65
  var oTemplatePrivate = oComponent.getModel("_templPriv");
@@ -424,7 +424,7 @@ sap.ui.define([
424
424
  oVisualFilterDialogModelClone.setProperty('/filterCompList/' + idx + '/searchVisible', bVisible);
425
425
  oVisualFilterDialogModel.setData(oVisualFilterDialogModelClone.getData());
426
426
  //update config object when VFConfig model is updated
427
- this.oConfig = oVisualFilterDialogModel.getProperty();
427
+ this.oConfig = oVisualFilterDialogModel.getData();
428
428
  //to enable Restore button on change of chart type, sort order, measure field and show in filter bar changes
429
429
  this.oState.oSmartFilterbar._oVariantManagement.currentVariantSetModified(true);
430
430
  },
@@ -8,7 +8,7 @@
8
8
  "i18n": "i18n/i18n.properties",
9
9
  "applicationVersion": {
10
10
  "__comment": "applicationVersion oder componentversion??",
11
- "version": "1.129.0"
11
+ "version": "1.130.1"
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.129.0"
11
+ "version": "1.130.1"
12
12
  },
13
13
  "title": "Canvas",
14
14
  "description": "Canvas Page",
@@ -53,7 +53,7 @@ sap.ui.define(["sap/ui/core/mvc/OverrideExecution",
53
53
  },
54
54
  oComponentData: { // data defined by component (i.e. not to be overridden by manifest
55
55
  templateName: "sap.suite.ui.generic.template.ListReport.view.ListReport",
56
- designtimePath: "sap/suite/ui/generic/template/designtime/ListReport.designtime"
56
+ designtimePath: "sap/suite/ui/generic/template/designtime/floorplans/ListReport.designtime"
57
57
  },
58
58
  init: function() {
59
59
  var oTemplatePrivate = oComponent.getModel("_templPriv");
@@ -549,6 +549,7 @@ sap.ui.define([
549
549
 
550
550
  oTemplateUtils.oServices.oFioriAIHandler && oTemplateUtils.oServices.oFioriAIHandler.getFioriAIEnabledPromise().then(function() {
551
551
  oState.oEasyFilterBarHandler = new EasyFilterBarHandler(oState, oController, oTemplateUtils);
552
+ oState.oEasyFilterBarHandler.initialiseEasyFilterBar();
552
553
  });
553
554
 
554
555
 
@@ -699,28 +700,38 @@ sap.ui.define([
699
700
  // oEasyFilterBarHandler is already initialized in the controller onInit
700
701
  // Prepare the metadats upfront so that it is not triggered for each search
701
702
  oState.oEasyFilterBarHandler && oState.oEasyFilterBarHandler.getEasyFilterSearchMetadata();
703
+ oState.oSmartFilterbar.attachFilterChange(function(oEvent) {
704
+ oState.oEasyFilterBarHandler.onFilterChange(oEvent);
705
+ });
702
706
  });
703
707
  },
704
-
705
708
  onAfterSFBVariantLoad: function (oEvent) {
706
709
  oState.oIappStateHandler.onAfterSFBVariantLoad(oEvent);
707
710
  },
708
-
709
711
  onSmartListDataReceived: function (oEvent) {
710
712
  var oSmartList = oEvent.getSource();
711
713
  fnOnDataReceived(oSmartList);
712
714
  },
713
- onEasyFilterEnterPress : function (oEvent) {
714
- var oEasyFilter = oEvent.getSource();
715
- oTemplateUtils.oCommonEventHandlers.onEasyFilterChange(oEasyFilter, oState);
715
+ onEasyFilterExecuteSearch: function(oEvent) {
716
+ oState.oEasyFilterBarHandler.onExecuteSearch(oEvent);
717
+ },
718
+ onEasyFilterClearFilters: function(oEvent) {
719
+ oState.oEasyFilterBarHandler.onClearFilters(oEvent);
720
+ },
721
+ onEasyFilterAfterQueryProcessing: function(oEvent) {
722
+ oState.oEasyFilterBarHandler.onAfterQueryProcessing(oEvent);
723
+ },
724
+ onEasyFilterBeforeQueryProcessing: function(oEvent) {
725
+ oState.oEasyFilterBarHandler.onBeforeQueryProcessing(oEvent);
726
+ },
727
+ onEasyFilterTokensChanged: function(oEvent) {
728
+ oState.oEasyFilterBarHandler.onTokensChanged(oEvent);
716
729
  },
717
- onEasyFilterGoButtonPress : function() {
718
- var oEasyFilter = oController.byId("easyFilter");
719
- oTemplateUtils.oCommonEventHandlers.onEasyFilterChange(oEasyFilter, oState);
730
+ onEasyFilterQueryChanged: function(oEvent) {
731
+ oState.oEasyFilterBarHandler.onQueryChanged(oEvent);
720
732
  },
721
- onEasyFilterChange : function(oEvent) {
722
- var oEasyFilter = oEvent.getSource();
723
- oEasyFilter.setValueState(sap.ui.core.ValueState.None);
733
+ onEasyFilterShowValueHelp: function(oEvent) {
734
+ oState.oEasyFilterBarHandler.onShowValueHelp(oEvent);
724
735
  },
725
736
  onFilterSwitch : function() {
726
737
  var oSmartFilterbar = oState.oSmartFilterbar;
@@ -7,9 +7,9 @@ ALL_OBJECTS=\u0412\u0441\u0438\u0447\u043A\u0438
7
7
 
8
8
  ALL_OBJECTS_HIDING_DRAFT=\u0412\u0441\u0438\u0447\u043A\u0438 (\u0441\u043A\u0440\u0438\u0432\u0430\u043D\u0435 \u043D\u0430 \u0447\u0435\u0440\u043D\u043E\u0432\u0438)
9
9
 
10
- UNCHANGED=\u041D\u0435\u043F\u0440\u043E\u043C\u0435\u043D\u0435\u043D
10
+ UNCHANGED=\u0411\u0435\u0437 \u043F\u0440\u043E\u043C\u0435\u043D\u0438
11
11
 
12
- EDITING_STATUS=\u0421\u0442\u0430\u0442\u0443\u0441 \u043D\u0430 \u0440\u0435\u0434\u0430\u043A\u0446\u0438\u044F
12
+ EDITING_STATUS=\u0421\u0442\u0430\u0442\u0443\u0441 \u043D\u0430 \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u0430\u043D\u0435
13
13
 
14
14
  YES=\u0414\u0430
15
15
 
@@ -90,7 +90,7 @@ DRAFT_OBJECT_FILTER=\u0421\u043E\u0431\u0441\u0442\u0432\u0435\u043D\u0430 \u044
90
90
 
91
91
  LOCKED_OBJECT=\u0417\u0430\u043A\u043B\u044E\u0447\u0435\u043D
92
92
 
93
- LOCKED_OBJECT_FILTER=\u0417\u0430\u043A\u043B\u044E\u0447\u0435\u043D \u043E\u0442 \u0434\u0440\u0443\u0433 \u043F\u043E\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043B
93
+ LOCKED_OBJECT_FILTER=\u0417\u0430\u043A\u043B\u044E\u0447\u0435\u043Do \u043E\u0442 \u0434\u0440\u0443\u0433 \u043F\u043E\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043B
94
94
 
95
95
  UNSAVED_CHANGES=\u041D\u0435\u0437\u0430\u043F\u0430\u0437\u0435\u043D\u0438 \u043F\u0440\u043E\u043C\u0435\u043D\u0438
96
96
 
@@ -5,7 +5,7 @@ DESCRIPTION=Listariport
5
5
 
6
6
  ALL_OBJECTS=\u00D6sszes
7
7
 
8
- ALL_OBJECTS_HIDING_DRAFT=Mind (tervezetek elrejt\u00E9se)
8
+ ALL_OBJECTS_HIDING_DRAFT=\u00D6sszes (tervezetek elrejt\u00E9se)
9
9
 
10
10
  UNCHANGED=V\u00E1ltozatlan
11
11
 
@@ -94,7 +94,7 @@ LOCKED_OBJECT_FILTER=\u0E16\u0E39\u0E01\u0E25\u0E47\u0E2D\u0E04\u0E42\u0E14\u0E2
94
94
 
95
95
  UNSAVED_CHANGES=\u0E01\u0E32\u0E23\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E41\u0E1B\u0E25\u0E07\u0E17\u0E35\u0E48\u0E44\u0E21\u0E48\u0E44\u0E14\u0E49\u0E1A\u0E31\u0E19\u0E17\u0E36\u0E01
96
96
 
97
- UNSAVED_CHANGES_FILTER=\u0E01\u0E32\u0E23\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E41\u0E1B\u0E25\u0E07\u0E42\u0E14\u0E22\u0E1C\u0E39\u0E49\u0E43\u0E0A\u0E49\u0E2D\u0E37\u0E48\u0E19\u0E17\u0E35\u0E48\u0E22\u0E31\u0E07\u0E44\u0E21\u0E48\u0E40\u0E01\u0E47\u0E1A\u0E1A\u0E31\u0E19\u0E17\u0E36\u0E01
97
+ UNSAVED_CHANGES_FILTER=\u0E01\u0E32\u0E23\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E41\u0E1B\u0E25\u0E07\u0E17\u0E35\u0E48\u0E22\u0E31\u0E07\u0E44\u0E21\u0E48\u0E44\u0E14\u0E49\u0E40\u0E01\u0E47\u0E1A\u0E1A\u0E31\u0E19\u0E17\u0E36\u0E01\u0E42\u0E14\u0E22\u0E1C\u0E39\u0E49\u0E43\u0E0A\u0E49\u0E2D\u0E37\u0E48\u0E19
98
98
 
99
99
  SHARE=\u0E41\u0E0A\u0E23\u0E4C
100
100
 
@@ -8,7 +8,7 @@
8
8
  "i18n": "i18n/i18n.properties",
9
9
  "applicationVersion": {
10
10
  "__comment": "applicationVersion oder componentversion??",
11
- "version": "1.129.0"
11
+ "version": "1.130.1"
12
12
  },
13
13
  "title": "{{TITLE}}",
14
14
  "description": "{{DESCRIPTION}}",
@@ -76,7 +76,10 @@
76
76
  },
77
77
  "sap.fe.placeholder":{
78
78
  "minVersion":"1.86.0"
79
- }
79
+ },
80
+ "sap.fe.controls":{
81
+ "minVersion":"1.130.0"
82
+ }
80
83
  }
81
84
  },
82
85
  "commands": {
@@ -9,9 +9,13 @@
9
9
  showShare="true" showExecuteOnSelection="{= !${parameter>/settings/isWorklist} }" displayTextForExecuteOnSelectionForStandardVariant="{= (${parameter>/settings/dataLoadSettings/loadDataOnAppLaunch} === 'ifAnyFilterExist' || ${parameter>/settings/dataLoadSettings/loadDataOnAppLaunch} === undefined) ? '{i18n>ST_LIST_DISPLAY_TEXT_FOR_EXECUTE_ON_SELECTION}' : undefined}" headerLevel="H2"/>
10
10
  </f:heading>
11
11
  <f:actions>
12
+ <ToolbarSpacer/>
13
+ <!-- global breakout actions-->
14
+ <template:repeat list="{parameter>/manifest/sap.ui5/extends/extensions/sap.ui.controllerExtensions/sap.suite.ui.generic.template.ListReport.view.ListReport/sap.ui.generic.app}" var="tmpEntitySet">
15
+ <core:Fragment fragmentName="sap.suite.ui.generic.template.fragments.GlobalActions" type="XML"/>
16
+ </template:repeat>
12
17
  <!--Enable the filter switch only if the easy filter is enabled-->
13
18
  <FlexBox renderType="Bare" visible="{= ${_templPriv>/listReport/isHeaderExpanded} &amp;&amp; ${_templPrivGlobal>/generic/fioriAI/isEasyFilterEnabled} }">
14
- <Label text="{i18n>ST_EASY_FILTER_TITLE}" class="sapSmartTemplateEasyFilterInputPadding"></Label>
15
19
  <SegmentedButton id = "template::FilterSwitchButton"
16
20
  selectedKey="{_templPriv>/listReport/filterMode}"
17
21
  selectionChange="._templateEventHandlers.onFilterSwitch">
@@ -19,16 +23,11 @@
19
23
  <OverflowToolbarLayoutData priority="NeverOverflow"/>
20
24
  </layoutData>
21
25
  <items>
22
- <SegmentedButtonItem text="{i18n>ST_MANUAL_FILTER}" key="classic"/>
23
- <SegmentedButtonItem text="{i18n>ST_EASY_FILTER}" key="easyFilter"/>
26
+ <SegmentedButtonItem icon="sap-icon://filter-fields" tooltip="{i18n>ST_MANUAL_FILTER}" key="classic"/>
27
+ <SegmentedButtonItem icon="sap-icon://ai" tooltip="{i18n>ST_EASY_FILTER}" key="easyFilter"/>
24
28
  </items>
25
29
  </SegmentedButton>
26
30
  </FlexBox>
27
- <ToolbarSpacer/>
28
- <!-- global breakout actions-->
29
- <template:repeat list="{parameter>/manifest/sap.ui5/extends/extensions/sap.ui.controllerExtensions/sap.suite.ui.generic.template.ListReport.view.ListReport/sap.ui.generic.app}" var="tmpEntitySet">
30
- <core:Fragment fragmentName="sap.suite.ui.generic.template.fragments.GlobalActions" type="XML"/>
31
- </template:repeat>
32
31
  <MenuButton id="{= ${parameter>/stableId}.getStableId({type: 'ListReportAction', subType: 'Share'}) }"
33
32
  icon="sap-icon://action"
34
33
  type="Transparent"
@@ -26,7 +26,10 @@
26
26
  </SegmentedButton>
27
27
  </template:then>
28
28
  <template:else>
29
- <Select id="{:= ${parameter>/stableId}.getStableId({type: 'QuickVariantSelection', subType: 'VariantSelect'})}"
29
+ <core:InvisibleText id="{:= ${parameter>/stableId}.getStableId({type: 'QuickVariantSelection', subType: 'InvisibleText'})}"
30
+ text="{i18n>CONTENT_SWITCH}"/>
31
+ <Select id="{:= ${parameter>/stableId}.getStableId({type: 'QuickVariantSelection', subType: 'VariantSelect'})}"
32
+ ariaLabelledBy="{:= ${parameter>/stableId}.getStableId({type: 'QuickVariantSelection', subType: 'InvisibleText'})}"
30
33
  selectedKey="{_templPriv>/listReport/multipleViews/selectedKey}"
31
34
  enabled="{= ${_templPriv>/generic/bDataAreShownInTable}}"
32
35
  autoAdjustWidth="true"
@@ -43,7 +43,7 @@ sap.ui.define(["sap/suite/ui/generic/template/lib/TemplateAssembler",
43
43
  },
44
44
  oComponentData: { // data defined by component (i.e. not to be overridden by manifest
45
45
  templateName: "sap.suite.ui.generic.template.ObjectPage.view.Details",
46
- designtimePath: "sap/suite/ui/generic/template/designtime/ObjectPage.designtime"
46
+ designtimePath: "sap/suite/ui/generic/template/designtime/floorplans/ObjectPage.designtime"
47
47
  },
48
48
  getTemplateSpecificParameters: templateSpecificPreparationHelper.getTemplateSpecificParameters.bind(null, oComponentUtils),
49
49
  refreshBinding: function (bUnconditional, mRefreshInfos, bWithoutAssociationsRefresh) {
@@ -6,7 +6,7 @@
6
6
  "type": "component",
7
7
  "i18n": "i18n/i18n.properties",
8
8
  "applicationVersion": {
9
- "version": "1.129.0"
9
+ "version": "1.130.1"
10
10
  },
11
11
  "title": "{{TITLE}}",
12
12
  "description": "{{DESCRIPTION}}",
@@ -320,62 +320,110 @@ sap.ui.define([
320
320
  fnSetTargetEntity(oEntitySet);
321
321
 
322
322
  var bToolbarButtonVisible = fnGetTableToolbarButtonVisibility(oSettings, oEntitySet, oResult.type);
323
- var oPathforRestriction = fnGetRestrictionForPasteButton(oEntitySet);
324
323
  /* Workaround fix for non draft apps with no section settings defined in the manifest. In UI5v1.93, the export to excel button is displayed by default because of a code gap in
325
324
  FE which later got fixed with a change related to paste button in UI5v1.96 wherein the export button is not displayed by default. This looks like a regression issue to customers
326
325
  for which we have provided this temporary solution which shall get removed soon. */
327
326
  oResult.bExportToExcel = (!oComponentUtils.isDraftEnabled() && !oSettings.sections) || bToolbarButtonVisible;
328
- if (oPathforRestriction) {
329
- var sPathforRestriction = "";
330
- if (oPathforRestriction.insertable) {
331
- sPathforRestriction = "${" + oPathforRestriction.insertable + "}";
332
- }
333
- if (oPathforRestriction.updatable) {
334
- sPathforRestriction = sPathforRestriction ? sPathforRestriction + " || ${" + oPathforRestriction.updatable + "}" : "${" + oPathforRestriction.updatable + "}";
335
- }
336
- sPathforRestriction = sPathforRestriction && "(" + sPathforRestriction + ")";
337
- oResult.vShowPasteButton = bToolbarButtonVisible ? "{= ${ui>/editable} && " + sPathforRestriction + "}" : false;
338
- } else {
339
- oResult.vShowPasteButton = bToolbarButtonVisible ? "{ui>/editable}" : false;
340
- }
341
-
327
+ oResult.vShowPasteButton = fnGetPasteButtonVisibility(oEntitySet);
342
328
  oResult.commandExecution = fnGetTableLevelStandardActions();
343
329
  oResult.persistencyKeyState = fnGetPersistencyKeyState(oSettings.tableSettings);
344
330
 
345
331
  return oResult;
346
332
  }
347
-
348
- // fnGetRestrictionForPasteButton return object contains updatable and insertable restriction for the given Entity Set.
349
- function fnGetRestrictionForPasteButton(oEntitySet) {
350
- var oLeadingEntitySet = oMetaModel.getODataEntitySet(sLeadingEntitySet);
351
- var oInsertableAnnotation, oUpdatableAnnotation;
352
-
353
- var oInsertRestrictionSetViaNavRestrictions = AnnotationHelper.handleNavigationRestrictions(oMetaModel, oLeadingEntitySet, oEntitySet, 'Insertable');
354
- if (oInsertRestrictionSetViaNavRestrictions) {
355
- oInsertableAnnotation = oInsertRestrictionSetViaNavRestrictions['Insertable'];
356
- } else {
357
- var oSectionInsertRestriction = oEntitySet['Org.OData.Capabilities.V1.InsertRestrictions'];
358
- oInsertableAnnotation = oSectionInsertRestriction && oSectionInsertRestriction['Insertable'];
359
- }
360
333
 
361
- var oUpdateRestrictionSetViaNavRestrictions = AnnotationHelper.handleNavigationRestrictions(oMetaModel, oLeadingEntitySet, oEntitySet, 'Updatable');
362
- if (oUpdateRestrictionSetViaNavRestrictions) {
363
- oUpdatableAnnotation = oUpdateRestrictionSetViaNavRestrictions['Updatable'];
364
- } else {
365
- var oSectionUpdatableRestriction = oEntitySet['Org.OData.Capabilities.V1.UpdateRestrictions'];
366
- oUpdatableAnnotation = oSectionUpdatableRestriction && oSectionUpdatableRestriction['Updatable'];
334
+ /**
335
+ * Finds out the paste button visibility. It can be visible when,
336
+ * 1. The object page is editable AND
337
+ * 2. Either the table should be insertable OR updatable
338
+ * @param {object} oEntitySet Table's entity set info
339
+ * @returns {boolean|string} Returns a boolean value for visibility or binding expression
340
+ */
341
+ function fnGetPasteButtonVisibility (oEntitySet) {
342
+ var vInsertRestriction = fnGetRestrictionForPaste(oEntitySet, "Insertable");
343
+ var vUpdateRestriction = fnGetRestrictionForPaste(oEntitySet, "Updatable");
344
+
345
+ // If both the restrictions are boolean and falsy, paste button should be hidden.
346
+ // Hence, immediately return false
347
+ if (!(vInsertRestriction || vUpdateRestriction)) {
348
+ return false;
367
349
  }
368
350
 
369
- var sInsertablePath = oInsertableAnnotation ? oInsertableAnnotation.Path : "";
370
- var sUpdatablePath = oUpdatableAnnotation ? oUpdatableAnnotation.Path : "";
351
+ // As we are going to combine insertable and updatable by OR condition, if there's any boolean value "true" found, it will be always evaluated to true
352
+ // Hence, no need to include them in the binding and just return the binding expression "ui>/editable"
353
+ var bAnyBooleanTrue = [vInsertRestriction, vUpdateRestriction].some(function (vRestriction) {
354
+ return vRestriction === true;
355
+ });
356
+ if (bAnyBooleanTrue) {
357
+ return "{ui>/editable}";
358
+ }
371
359
 
372
- if (sInsertablePath || sUpdatablePath) {
373
- return {
374
- insertable: sInsertablePath,
375
- updatable: sUpdatablePath
376
- };
360
+ // Now the remaining cases are either
361
+ // 1. Both are path expressions or
362
+ // 2. One path expression and one boolean value "false"
363
+ //
364
+ // While building OR expression, "${expression} || false" will always be evaluated to "${expression}"
365
+ // Hence, we can omit the "false" values and build binding expression with "Path" values
366
+ var sPathRestriction = [vInsertRestriction, vUpdateRestriction].filter(function (vRestriction) {
367
+ return (typeof vRestriction === "string");
368
+ }).map(function (sPath) {
369
+ return "${" + sPath + "}";
370
+ }).join(" || ");
371
+
372
+ // Add "editable" with "path" expression
373
+ return "{= ${ui>/editable} && ( " + sPathRestriction + " )}";
374
+ }
375
+
376
+ /**
377
+ * Checks the navigation restriction on the parent entity set or current entity set
378
+ * and returns the boolean value or path for the restriction
379
+ *
380
+ * 1. If NavigationRestriction is available on parent entity set
381
+ * a. Restricted by boolean value - returns the boolean value
382
+ * b. Restricted by path - Checks the data type of path and returns it
383
+ *
384
+ * 2. If Restriction is available on table's entity set
385
+ * a. Restricted by boolean value - returns the boolean value
386
+ * b. Restricted by path - ignores it
387
+ * Important: Reason for ignoring the path. As path value refers to the individual records on the table, it can't control the whole table's paste functionality
388
+ *
389
+ * 3. If no restriction available, returns true
390
+ *
391
+ * @param {object} oEntitySet Table's entity set info
392
+ * @param {string} sRestrictionType "Insertable" or "Updatable"
393
+ * @returns {boolean|string} Boolean value or path for the restriction
394
+ */
395
+ function fnGetRestrictionForPaste (oEntitySet, sRestrictionType) {
396
+ var mAnnotation = {
397
+ Insertable: "Org.OData.Capabilities.V1.InsertRestrictions",
398
+ Updatable: "Org.OData.Capabilities.V1.UpdateRestrictions"
399
+ };
400
+
401
+ // Navigation restriction on parent entity set
402
+ var oLeadingEntitySet = oMetaModel.getODataEntitySet(sLeadingEntitySet);
403
+ var oNavRestriction = AnnotationHelper.handleNavigationRestrictions(oMetaModel, oLeadingEntitySet, oEntitySet, sRestrictionType);
404
+ var oNavRestrictionAnnotation = oNavRestriction && oNavRestriction[sRestrictionType];
405
+
406
+ // Restriction on table entity set
407
+ var oSectionRestriction = oEntitySet[mAnnotation[sRestrictionType]];
408
+ var oSectionRestrictionAnnotation = oSectionRestriction && oSectionRestriction[sRestrictionType];
409
+
410
+ // Check for navigation restriction
411
+ if (oNavRestrictionAnnotation) {
412
+ if (oNavRestrictionAnnotation.Bool) {
413
+ return oNavRestrictionAnnotation.Bool !== "false";
414
+ } else if (oNavRestrictionAnnotation.Path) {
415
+ var bIsBooleanPath = AnnotationHelper._isPropertyPathBoolean(oMetaModel, oLeadingEntitySet.entityType, oNavRestrictionAnnotation.Path);
416
+ if (!bIsBooleanPath) {
417
+ oLogger.error("Service Broken: Restrictions annotations for entity type " + sLeadingEntitySet + " for section '" + sRestrictionType + "' are invalid.");
418
+ return false;
419
+ }
420
+ return oNavRestrictionAnnotation.Path;
421
+ }
422
+ } else if (oSectionRestrictionAnnotation && oSectionRestrictionAnnotation.Bool) {
423
+ return oSectionRestrictionAnnotation.Bool !== "false";
377
424
  }
378
- return null;
425
+ // If no annotation found, return true
426
+ return true;
379
427
  }
380
428
 
381
429
  // used in the process of determining the visibility of export to excel and paste button depending on certain restrictions/conditions.
@@ -29,7 +29,10 @@
29
29
  </SegmentedButton>
30
30
  </template:then>
31
31
  <template:else>
32
+ <core:InvisibleText id="{:= ${parameter>/stableId}.getStableId({type: 'ObjectPageTable', subType: 'InvisibleText', sFacet: ${facetId>id}})}"
33
+ text="{i18n>CONTENT_SWITCH}"/>
32
34
  <Select id="{:= ${parameter>/stableId}.getStableId({type: 'ObjectPageTable', subType: 'VariantSelection', sFacet: ${facetId>id}})}"
35
+ ariaLabelledBy="{:= ${parameter>/stableId}.getStableId({type: 'ObjectPageTable', subType: 'InvisibleText', sFacet: ${facetId>id}})}"
33
36
  selectedKey="{path: 'facet>', formatter: 'AHMultipleViews.getSelectedKeyBinding'}"
34
37
  autoAdjustWidth="true"
35
38
  forceSelection="true">
@@ -6,7 +6,7 @@
6
6
  "type": "component",
7
7
  "i18n": "i18n/i18n.properties",
8
8
  "applicationVersion": {
9
- "version": "1.129.0"
9
+ "version": "1.130.1"
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.129.0"
9
+ "version": "1.130.1"
10
10
  },
11
11
  "title": "{{TITLE}}",
12
12
  "description": "{{DESCRIPTION}}",