@sapui5/sap.suite.ui.generic.template 1.125.0 → 1.126.0

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 (66) 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/control/visualfilterbar/FilterItem.js +1 -1
  4. package/src/sap/suite/ui/generic/template/AnalyticalListPage/control/visualfilterbar/FilterItemMicroChart.js +1 -0
  5. package/src/sap/suite/ui/generic/template/AnalyticalListPage/controller/ControllerImplementation.js +13 -14
  6. package/src/sap/suite/ui/generic/template/AnalyticalListPage/controller/DropDownController.js +4 -4
  7. package/src/sap/suite/ui/generic/template/AnalyticalListPage/controller/FilterBarController.js +2 -5
  8. package/src/sap/suite/ui/generic/template/AnalyticalListPage/controller/VisualFilterDialogController.js +0 -9
  9. package/src/sap/suite/ui/generic/template/AnalyticalListPage/extensionAPI/ExtensionAPI.js +10 -1
  10. package/src/sap/suite/ui/generic/template/AnalyticalListPage/manifest.json +1 -1
  11. package/src/sap/suite/ui/generic/template/AnalyticalListPage/view/AnalyticalListPage.view.xml +1 -1
  12. package/src/sap/suite/ui/generic/template/AnalyticalListPage/view/fragments/ContentViewButtons.fragment.xml +1 -1
  13. package/src/sap/suite/ui/generic/template/AnalyticalListPage/view/fragments/SmartFilterBar.fragment.xml +1 -3
  14. package/src/sap/suite/ui/generic/template/Canvas/manifest.json +1 -1
  15. package/src/sap/suite/ui/generic/template/ListReport/controller/ControllerImplementation.js +57 -4
  16. package/src/sap/suite/ui/generic/template/ListReport/controller/IappStateHandler.js +10 -0
  17. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n.properties +3 -0
  18. package/src/sap/suite/ui/generic/template/ListReport/manifest.json +1 -1
  19. package/src/sap/suite/ui/generic/template/ListReport/view/fragments/SmartFilterBar.fragment.xml +1 -1
  20. package/src/sap/suite/ui/generic/template/ListReport/view/fragments/SmartTable.fragment.xml +9 -13
  21. package/src/sap/suite/ui/generic/template/ObjectPage/Component.js +2 -1
  22. package/src/sap/suite/ui/generic/template/ObjectPage/controller/ControllerImplementation.js +3 -2
  23. package/src/sap/suite/ui/generic/template/ObjectPage/manifest.json +1 -1
  24. package/src/sap/suite/ui/generic/template/ObjectPage/templateSpecificPreparationHelper.js +38 -12
  25. package/src/sap/suite/ui/generic/template/ObjectPage/view/Details.view.xml +2 -0
  26. package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/HeaderContainer.fragment.xml +11 -0
  27. package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/SmartTable.fragment.xml +8 -14
  28. package/src/sap/suite/ui/generic/template/QuickCreate/manifest.json +1 -1
  29. package/src/sap/suite/ui/generic/template/QuickCreate/view/QuickCreate.controller.js +4 -3
  30. package/src/sap/suite/ui/generic/template/QuickView/manifest.json +1 -1
  31. package/src/sap/suite/ui/generic/template/designtime/AnalyticalListPage.designtime.js +2 -2
  32. package/src/sap/suite/ui/generic/template/designtime/ListReport.designtime.js +2 -2
  33. package/src/sap/suite/ui/generic/template/designtime/ObjectPage.designtime.js +2 -5
  34. package/src/sap/suite/ui/generic/template/fragments/ContactDetails.fragment.xml +15 -14
  35. package/src/sap/suite/ui/generic/template/fragments/GridTableCells.fragment.xml +11 -0
  36. package/src/sap/suite/ui/generic/template/fragments/HeaderDataPointContent.fragment.xml +11 -0
  37. package/src/sap/suite/ui/generic/template/fragments/HeaderFormDataField.fragment.xml +12 -0
  38. package/src/sap/suite/ui/generic/template/fragments/QuickViewSmartForm.fragment.xml +2 -0
  39. package/src/sap/suite/ui/generic/template/fragments/SmartFormDataField.fragment.xml +21 -0
  40. package/src/sap/suite/ui/generic/template/fragments/TableCell.fragment.xml +11 -0
  41. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartFilterBarWrapper.js +52 -1
  42. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartTableChartCommon.js +6 -4
  43. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartVariantManagementWrapper.js +3 -3
  44. package/src/sap/suite/ui/generic/template/js/AnnotationHelper.js +3 -2
  45. package/src/sap/suite/ui/generic/template/lib/AppComponent.js +1 -1
  46. package/src/sap/suite/ui/generic/template/lib/Application.js +2 -4
  47. package/src/sap/suite/ui/generic/template/lib/CRUDHelper.js +7 -4
  48. package/src/sap/suite/ui/generic/template/lib/CommonEventHandlers.js +0 -7
  49. package/src/sap/suite/ui/generic/template/lib/CreateWithDialogHandler.js +23 -10
  50. package/src/sap/suite/ui/generic/template/lib/MessageButtonHelper.js +7 -5
  51. package/src/sap/suite/ui/generic/template/lib/MessageStripHelper.js +6 -6
  52. package/src/sap/suite/ui/generic/template/lib/ShareUtils.js +2 -12
  53. package/src/sap/suite/ui/generic/template/lib/insights/InsightsHandler.js +21 -21
  54. package/src/sap/suite/ui/generic/template/lib/navigation/NavigationController.js +1 -1
  55. package/src/sap/suite/ui/generic/template/lib/presentationControl/SmartChartHandler.js +15 -1
  56. package/src/sap/suite/ui/generic/template/lib/presentationControl/SmartListHandler.js +6 -1
  57. package/src/sap/suite/ui/generic/template/lib/presentationControl/SmartTableHandler.js +7 -2
  58. package/src/sap/suite/ui/generic/template/library.js +1 -1
  59. package/src/sap/suite/ui/generic/template/listTemplates/controller/DetailController.js +1 -1
  60. package/src/sap/suite/ui/generic/template/listTemplates/controller/IappStateHandler.js +32 -29
  61. package/src/sap/suite/ui/generic/template/listTemplates/controller/SmartChartController.js +1 -1
  62. package/src/sap/suite/ui/generic/template/listTemplates/filterSettingsPreparationHelper.js +3 -1
  63. package/src/sap/suite/ui/generic/template/listTemplates/fragments/DetailSmartTable.fragment.xml +5 -15
  64. package/src/sap/suite/ui/generic/template/listTemplates/fragments/SmartTableToolbar.fragment.xml +1 -1
  65. package/src/sap/suite/ui/generic/template/themes/base/ObjectPage.less +1 -1
  66. package/src/sap/suite/ui/generic/template/themes/sap_bluecrystal_base/ObjectPage.less +1 -1
@@ -1,4 +1,4 @@
1
- <core:FragmentDefinition xmlns="sap.m" xmlns:core="sap.ui.core" xmlns:st="sap.ui.comp.smarttable" xmlns:table="sap.ui.table" xmlns:layout="sap.ui.layout" xmlns:plugins="sap.m.plugins" xmlns:rowmodes="sap.ui.table.rowmodes"
1
+ <core:FragmentDefinition xmlns="sap.m" xmlns:core="sap.ui.core" xmlns:st="sap.ui.comp.smarttable" xmlns:table="sap.ui.table" xmlns:layout="sap.ui.layout" xmlns:plugins="sap.m.plugins"
2
2
  xmlns:template="http://schemas.sap.com/sapui5/extension/sap.ui.core.template/1"
3
3
  template:require="{AH: 'sap/suite/ui/generic/template/js/AnnotationHelper', AHModel: 'sap/ui/model/odata/AnnotationHelper', StableIdHelper: 'sap/suite/ui/generic/template/js/StableIdHelper'}">
4
4
 
@@ -21,6 +21,7 @@
21
21
  persistencyKey="{parts: [{path: 'smartControlId>id'}, {path: 'objectPageTableSettings>value/persistencyKeyState'}], formatter: 'AH.getPersistencyKey'}"
22
22
  tableBindingPath="{= ${path: 'target>AnnotationPath'}.slice(0, ${path: 'target>AnnotationPath'}.lastIndexOf('/')) }"
23
23
  fitContainer="false"
24
+ useOnlyOneSolidToolbar="true"
24
25
  enableAutoBinding="false"
25
26
  showRowCount="true"
26
27
  fieldChange="._templateEventHandlers.onTableSmartFieldModelValueChanged"
@@ -30,7 +31,7 @@
30
31
  headerLevel="H5"
31
32
  headerStyle="H5"
32
33
  useVariantManagement="{objectPageTableSettings>value/variantManagement}"
33
- enableExport = "{objectPageTableSettings>value/bExportToExcel}"
34
+ useExportToExcel = "{objectPageTableSettings>value/bExportToExcel}"
34
35
  useTablePersonalisation="true"
35
36
  entitySet="{path: 'listEntitySet>name'}"
36
37
  ignoreFromPersonalisation="{path: 'collection>', formatter: 'AH.suppressP13NDuplicateColumns'}"
@@ -138,10 +139,9 @@
138
139
  <template:if test="{= ${objectPageTableSettings>value/type} === 'AnalyticalTable' &amp;&amp; ${listEntityType>sap:semantics} === 'aggregate'}">
139
140
  <template:then>
140
141
  <table:AnalyticalTable id="{path: 'facet>', formatter: 'AH.getStableIdPartFromFacet'}::analyticalTable"
141
- enableColumnReordering="true"
142
+ visibleRowCountMode="Auto" enableColumnReordering="true"
142
143
  rowSelectionChange="._templateEventHandlers.onSelectionChange"
143
144
  beforeOpenContextMenu="._templateEventHandlers.beforeOpenContextMenu($event, '{smartControlId>id}')"
144
- showColumnVisibilityMenu="false"
145
145
  enableColumnFreeze="true" enableCellFilter="true" rowActionCount="{= ${parts: [ {path: 'listEntitySet>'}, {path: 'parameter>/settings/subPages/'}, {path: 'parameter>/manifest'}, {path: 'facet>Target/AnnotationPath'},{path: 'parameter>/isDraftEnabled'}], formatter: 'AH.getRowActionCountForDetailPage'}}">
146
146
  <core:Fragment fragmentName="sap.suite.ui.generic.template.ObjectPage.view.fragments.SmartTableUiTableCommons" type="XML"/>
147
147
  <table:columns>
@@ -150,14 +150,14 @@
150
150
  <core:Fragment fragmentName="sap.suite.ui.generic.template.fragments.AnalyticalTableColumns" type="XML"/>
151
151
  </template:with>
152
152
  </table:columns>
153
- <table:rowMode>
154
- <rowmodes:Auto/>
155
- </table:rowMode>
156
153
  </table:AnalyticalTable>
157
154
  </template:then>
158
155
  <!--Tree table implementation: Begins-->
159
156
  <template:elseif test="{= ${objectPageTableSettings>value/type} === 'TreeTable'}">
160
157
  <table:TreeTable id="{path: 'facet>', formatter: 'AH.getStableIdPartFromFacet'}::treeTable"
158
+ rootLevel="0"
159
+ visibleRowCountMode="Auto"
160
+ expandFirstLevel="false"
161
161
  rowSelectionChange="._templateEventHandlers.onSelectionChange"
162
162
  beforeOpenContextMenu="._templateEventHandlers.beforeOpenContextMenu($event, '{smartControlId>id}')"
163
163
  rowActionCount="{= ({parts: [{path: 'listEntitySet>'}, {path: 'parameter>/settings/subPages/'}], formatter: 'AH.hasSubObjectPage'} ? 1 : 0 )}">
@@ -168,15 +168,12 @@
168
168
  <core:Fragment fragmentName="sap.suite.ui.generic.template.fragments.TreeTableColumns" type="XML"/>
169
169
  </template:with>
170
170
  </table:columns>
171
- <table:rowMode>
172
- <rowmodes:Auto/>
173
- </table:rowMode>
174
171
  </table:TreeTable>
175
172
  </template:elseif>
176
173
  <!--Tree table implementation: Ends-->
177
174
  <template:elseif test="{= ${objectPageTableSettings>value/type} === 'GridTable'}">
178
175
  <table:Table id="{path: 'facet>', formatter: 'AH.getStableIdPartFromFacet'}::gridTable"
179
- enableColumnReordering="true" showColumnVisibilityMenu="false"
176
+ enableColumnReordering="true" visibleRowCountMode="Auto"
180
177
  rowSelectionChange="._templateEventHandlers.onSelectionChange"
181
178
  beforeOpenContextMenu="._templateEventHandlers.beforeOpenContextMenu($event, '{smartControlId>id}')"
182
179
  enableColumnFreeze="true" enableCellFilter="true"
@@ -188,9 +185,6 @@
188
185
  <core:Fragment fragmentName="sap.suite.ui.generic.template.fragments.GridTableColumns" type="XML"/>
189
186
  </template:with>
190
187
  </table:columns>
191
- <table:rowMode>
192
- <rowmodes:Auto/>
193
- </table:rowMode>
194
188
  </table:Table>
195
189
  </template:elseif>
196
190
  <template:else>
@@ -6,7 +6,7 @@
6
6
  "type": "component",
7
7
  "i18n": "i18n/i18n.properties",
8
8
  "applicationVersion": {
9
- "version": "1.125.0"
9
+ "version": "1.126.0"
10
10
  },
11
11
  "title": "{{TITLE}}",
12
12
  "description": "{{DESCRIPTION}}",
@@ -367,18 +367,19 @@ sap.ui.define(["../../js/QuickTemplates/QuickActionBaseController", "../../js/Qu
367
367
  onRemoveLineItemPress: function (oEvent) {
368
368
  var that = this;
369
369
  this.setBusy(true);
370
- var context = oEvent.getSource().getBindingContext();
370
+ var oContext = oEvent.getSource().getBindingContext();
371
371
 
372
372
  if (this.bDraftEnabled) {
373
373
  this.oTransactionController.triggerSubmitChanges().then(function (oResponse) {
374
- that._deleteLineItem(context);
374
+ that._deleteLineItem(oContext);
375
375
  }, function (oError) {
376
376
  this.setBusy(false);
377
377
  this.onError(oError);
378
378
 
379
379
  }.bind(this));
380
380
  } else {
381
- this.getView().getModel().deleteCreatedEntry(context);
381
+ var sContextPath = oContext.getPath();
382
+ this.getView().getModel().resetChanges([sContextPath], undefined, true);
382
383
  this.setBusy(false);
383
384
  if (this.oQuickCreateAPI) {
384
385
  this.oQuickCreateAPI.calculateViewHeight(this.getView(), false);
@@ -6,7 +6,7 @@
6
6
  "type": "component",
7
7
  "i18n": "i18n/i18n.properties",
8
8
  "applicationVersion": {
9
- "version": "1.125.0"
9
+ "version": "1.126.0"
10
10
  },
11
11
  "title": "{{TITLE}}",
12
12
  "description": "{{DESCRIPTION}}",
@@ -22,7 +22,7 @@ sap.ui.define(["sap/suite/ui/generic/template/designtime/utils/designtimeHelper"
22
22
  properties: ["ignoredChartTypes", "selectionMode", "noData", "showChartTooltip", "showChartTypeSelectionButton", "showDownloadButton", "showLegendButton"]
23
23
  },
24
24
  "sap.ui.comp.smarttable.SmartTable": {
25
- properties: ["enableExport", "showRowCount", "exportType", "fitContainer", "showTablePersonalisation"],
25
+ properties: ["useExportToExcel", "showRowCount", "exportType", "showTablePersonalisation"],
26
26
  actions: ["settings"]
27
27
  },
28
28
  "sap.ui.table.AnalyticalColumn": {
@@ -58,7 +58,7 @@ sap.ui.define(["sap/suite/ui/generic/template/designtime/utils/designtimeHelper"
58
58
  properties: ["useDateRangeType"]
59
59
  },
60
60
  "sap.ui.table.AnalyticalTable": {
61
- properties: ["selectionMode"]
61
+ properties: ["selectionMode", "minAutoRowCount", "visibleRowCountMode"]
62
62
  },
63
63
  "sap.ui.table.AnalyticalColumn": {
64
64
  properties: ["width", "minWidth"]
@@ -19,7 +19,7 @@ sap.ui.define(["sap/suite/ui/generic/template/designtime/utils/designtimeHelper"
19
19
  properties: ["liveMode"]
20
20
  },
21
21
  "sap.ui.comp.smarttable.SmartTable": {
22
- properties: ["enableExport"],
22
+ properties: ["useExportToExcel"],
23
23
  actions: ["settings"]
24
24
  },
25
25
  "sap.m.Table": {
@@ -90,7 +90,7 @@ sap.ui.define(["sap/suite/ui/generic/template/designtime/utils/designtimeHelper"
90
90
  properties: ["selectionMode"]
91
91
  },
92
92
  "sap.ui.table.AnalyticalTable": {
93
- properties: ["selectionMode"]
93
+ properties: ["selectionMode", "minAutoRowCount", "visibleRowCountMode"]
94
94
  },
95
95
  "sap.ui.table.AnalyticalColumn": {
96
96
  properties: ["width", "minWidth", "showFilterMenuEntry", "summed"]
@@ -29,9 +29,6 @@ sap.ui.define(["sap/suite/ui/generic/template/designtime/utils/designtimeHelper"
29
29
  "sap.m.HBox": { // meant in the VBox mentioned above, and for paginator buttons (todo: check exact place)
30
30
  properties: ["visible"]
31
31
  },
32
- "sap.ui.layout.Grid": { // meant for Grid in subSection. Actually there are two grids - clarify whether both are needed and which is meant
33
- properties: ["defaultSpan"] // Todo: check, how this works at all
34
- },
35
32
  "sap.uxap.ObjectPageSection": {
36
33
  properties: ["showTitle", "titleUppercase", "title"]
37
34
  },
@@ -39,7 +36,7 @@ sap.ui.define(["sap/suite/ui/generic/template/designtime/utils/designtimeHelper"
39
36
  properties: ["title"]
40
37
  },
41
38
  "sap.ui.comp.smarttable.SmartTable": {
42
- properties: ["enableExport", "editable", "showPasteButton"],
39
+ properties: ["useExportToExcel", "editable", "showPasteButton"],
43
40
  actions: ["settings"]
44
41
  },
45
42
  "sap.m.Table": {
@@ -112,7 +109,7 @@ sap.ui.define(["sap/suite/ui/generic/template/designtime/utils/designtimeHelper"
112
109
  properties: ["selectionMode"]
113
110
  },
114
111
  "sap.ui.table.AnalyticalTable": {
115
- properties: ["selectionMode"]
112
+ properties: ["selectionMode", "minAutoRowCount", "visibleRowCountMode"]
116
113
  },
117
114
  "sap.ui.table.AnalyticalColumn": {
118
115
  properties: ["width", "minWidth"]
@@ -18,6 +18,7 @@
18
18
  displaySize="S"
19
19
  displayShape="Circle"
20
20
  class="sapUiTinyMarginEnd"
21
+ tooltip="{contact>/contactStatus/badgeTooltip}"
21
22
  badgeValueState="{contact>/contactStatus/badgeValueState}" badgeIcon="{contact>/contactStatus/badgeIcon}" badgeTooltip="{contact>/contactStatus/badgeTooltip}"
22
23
  macrodata:type="{contact>/teamsCollabOptions/0/key}"
23
24
  macrodata:email="{contact>/email}"
@@ -63,38 +64,38 @@
63
64
  </VBox>
64
65
 
65
66
  <VBox visible="{= !!${contact>/title}}" class="sapUiTinyMarginBottom">
66
- <Label text="{i18n>CONTACT_JOB_TITLE}:"/>
67
- <Text text="{contact>/title}" class="sapUiTinyMarginBottom" />
67
+ <Label text="{i18n>CONTACT_JOB_TITLE}:" labelFor="template:::contact:::contactDetails::jobTitle"/>
68
+ <Text id="template:::contact:::contactDetails::jobTitle" text="{contact>/title}" class="sapUiTinyMarginBottom" />
68
69
  </VBox>
69
70
 
70
71
  <VBox visible="{= !!${contact>/org}}" class="sapUiTinyMarginBottom">
71
- <Label text="{i18n>CONTACT_DEPARTMENT}:"/>
72
- <Text text="{contact>/org}" class="sapUiTinyMarginBottom" />
72
+ <Label text="{i18n>CONTACT_DEPARTMENT}:" labelFor="template:::contact:::contactDetails::department"/>
73
+ <Text id="template:::contact:::contactDetails::department" text="{contact>/org}" class="sapUiTinyMarginBottom" />
73
74
  </VBox>
74
75
 
75
76
  <VBox visible="{= !!${contact>/email}}" class="sapUiTinyMarginBottom">
76
- <Label text="{i18n>CONTACT_EMAIL}:" />
77
- <Link text="{contact>/email}" href="{path: 'contact>/email', formatter: '.formatUri'}" class="sapUiTinyMarginBottom" wrapping="true"/>
77
+ <Label text="{i18n>CONTACT_EMAIL}:" labelFor="template:::contact:::contactDetails::email"/>
78
+ <Link id="template:::contact:::contactDetails::email" text="{contact>/email}" href="{path: 'contact>/email', formatter: '.formatUri'}" class="sapUiTinyMarginBottom" wrapping="true"/>
78
79
  </VBox>
79
80
 
80
81
  <VBox visible="{= !!${contact>/work}}" class="sapUiTinyMarginBottom">
81
- <Label text="{i18n>CONTACT_PHONE}:"/>
82
- <Link text="{contact>/work}" href="{path: 'contact>/work', formatter: '.formatUri'}" class="sapUiTinyMarginBottom" wrapping="true"/>
82
+ <Label text="{i18n>CONTACT_PHONE}:" labelFor="template:::contact:::contactDetails::phone"/>
83
+ <Link id="template:::contact:::contactDetails::phone" text="{contact>/work}" href="{path: 'contact>/work', formatter: '.formatUri'}" class="sapUiTinyMarginBottom" wrapping="true"/>
83
84
  </VBox>
84
85
 
85
86
  <VBox visible="{= !!${contact>/cell}}" class="sapUiTinyMarginBottom">
86
- <Label text="{i18n>CONTACT_MOBILE}:"/>
87
- <Link text="{contact>/cell}" href="{path: 'contact>/cell', formatter: '.formatUri'}" class="sapUiTinyMarginBottom" wrapping="true"/>
87
+ <Label text="{i18n>CONTACT_MOBILE}:" labelFor="template:::contact:::contactDetails::mobile"/>
88
+ <Link id="template:::contact:::contactDetails::mobile" text="{contact>/cell}" href="{path: 'contact>/cell', formatter: '.formatUri'}" class="sapUiTinyMarginBottom" wrapping="true"/>
88
89
  </VBox>
89
90
 
90
91
  <VBox visible="{= !!${contact>/fax}}" class="sapUiTinyMarginBottom">
91
- <Label text="{i18n>CONTACT_FAX}:"/>
92
- <Text text="{contact>/fax}" class="sapUiTinyMarginBottom" />
92
+ <Label text="{i18n>CONTACT_FAX}:" labelFor="template:::contact:::contactDetails::fax"/>
93
+ <Text id="template:::contact:::contactDetails::fax" text="{contact>/fax}" class="sapUiTinyMarginBottom" />
93
94
  </VBox>
94
95
 
95
96
  <VBox visible="{= !!${contact>/adr}}" class="sapUiTinyMarginBottom">
96
- <Label text="{i18n>CONTACT_ADDRESS}:"/>
97
- <Text text="{contact>/adr}" class="sapUiTinyMarginBottom" />
97
+ <Label text="{i18n>CONTACT_ADDRESS}:" labelFor="template:::contact:::contactDetails::address"/>
98
+ <Text id="template:::contact:::contactDetails::address" text="{contact>/adr}" class="sapUiTinyMarginBottom" />
98
99
  </VBox>
99
100
 
100
101
  </VBox>
@@ -28,6 +28,17 @@
28
28
  <smartField:configuration>
29
29
  <smartField:Configuration displayBehaviour="{parts: [{path: 'dataField>'}, {path: 'entitySet>'}, {path: 'dataFieldTarget>Data'}], formatter: 'AH.getTextArrangementForSCFields'}"/>
30
30
  </smartField:configuration>
31
+ <template:if test="{= ${dataField>Criticality}}">
32
+ <smartField:controlProposal>
33
+ <smartField:ControlProposal>
34
+ <smartField:objectStatus>
35
+ <smartField:ObjectStatus criticality="{path: 'dataField>Criticality', formatter: 'AHModel.simplePath'}"
36
+ criticalityRepresentationType="{= (${dataField>CriticalityRepresentation/EnumMember} === 'com.sap.vocabularies.UI.v1.CriticalityRepresentationType/WithoutIcon') ? 'WithoutIcon' : 'WithIcon'}"
37
+ ariaLabelledBy="{columnId>id}"/>
38
+ </smartField:objectStatus>
39
+ </smartField:ControlProposal>
40
+ </smartField:controlProposal>
41
+ </template:if>
31
42
  </smartField:SmartField>
32
43
  </template:elseif>
33
44
  <!-- template for DataFieldForAction and DataFieldForIntentBasedNavigation -->
@@ -20,6 +20,17 @@
20
20
  <sfi:Configuration
21
21
  displayBehaviour="{parts: [{path: 'dataPoint>'}, {path: 'annotation>'}, {path: 'entitySet>'}], formatter: 'AH.getTextArrangementForSmartControl'}"/>
22
22
  </sfi:configuration>
23
+ <template:if test="{= ${dataPoint>Criticality} }">
24
+ <sfi:controlProposal>
25
+ <sfi:ControlProposal>
26
+ <sfi:objectStatus>
27
+ <sfi:ObjectStatus
28
+ criticality="{path: 'dataPoint>Criticality', formatter: 'AHModel.simplePath'}"
29
+ criticalityRepresentationType="WithoutIcon"/>
30
+ </sfi:objectStatus>
31
+ </sfi:ControlProposal>
32
+ </sfi:controlProposal>
33
+ </template:if>
23
34
  </sfi:SmartField>
24
35
  </template:with>
25
36
  </core:FragmentDefinition>
@@ -108,6 +108,18 @@
108
108
  <sfi:Configuration
109
109
  displayBehaviour="{parts: [{path: 'dataField>'}, {path: 'annotation>'}, {path: 'entitySet>'}], formatter: 'AH.getTextArrangementForSmartControl'}"/>
110
110
  </sfi:configuration>
111
+ <template:if test="{= ${dataField>Criticality} }">
112
+ <sfi:controlProposal>
113
+ <sfi:ControlProposal>
114
+ <sfi:objectStatus>
115
+ <sfi:ObjectStatus
116
+ criticality="{path: 'dataField>Criticality', formatter: 'AHModel.simplePath'}"
117
+ criticalityRepresentationType="{= (${dataField>CriticalityRepresentation/EnumMember} === 'com.sap.vocabularies.UI.v1.CriticalityRepresentationType/WithoutIcon') ? 'WithoutIcon' : 'WithIcon'}"
118
+ class="sapSmartTemplatesObjectPageHeaderFormObjectStatus"/>
119
+ </sfi:objectStatus>
120
+ </sfi:ControlProposal>
121
+ </sfi:controlProposal>
122
+ </template:if>
111
123
  <sfi:customData>
112
124
  <core:CustomData key="defaultTextInEditModeSource" value="{path: 'dataFieldValue>', formatter: 'AH.setValidationForValueList'}" />
113
125
  <core:CustomData
@@ -13,8 +13,10 @@
13
13
  class="navigationPopover navigationPopoverHeader sapMQuickViewPage sapSmartTemplatesSmartLinkNavPopoverContentTitleAreaTrunc">
14
14
  <!--the icon comes from the target entity type header,
15
15
  the binding context is set relatively to the the target, and an expand is added if the picture is behind a nav property-->
16
+ <!-- The formatter 'sap/suite/ui/generic/template/js/formatters/formatImageUrl' is used by 'AH.formatImageOrTypeUrl' -->
16
17
  <Avatar
17
18
  id="{:= ${parameter>/stableId}.getStableId({type: 'QuickView', subType: 'Avatar'})}"
19
+ core:require="{formatImageUrl: 'sap/suite/ui/generic/template/js/formatters/formatImageUrl'}"
18
20
  tooltip="{path: 'header>Title/Value', formatter: 'AHModel.format'}"
19
21
  visible="{= !!(${path: 'header>ImageUrl'} || ${path: 'header>TypeImageUrl'}) }"
20
22
  binding="{parts:[{path: 'entitySet>'}, {path: 'quickView>/navigationPath'}, {path: 'header>ImageUrl'}, {path: 'header>TypeImageUrl'}], formatter: 'AH.getPathWithExpandFromHeader'}"
@@ -66,6 +66,17 @@
66
66
  <sfi:customData>
67
67
  <core:CustomData key="defaultTextInEditModeSource" value="{path: 'dataFieldValue>', formatter: 'AH.setValidationForValueList'}" />
68
68
  </sfi:customData>
69
+ <template:if test="{= ${connectedFieldElement>Criticality} }">
70
+ <sfi:controlProposal>
71
+ <sfi:ControlProposal>
72
+ <sfi:objectStatus>
73
+ <sfi:ObjectStatus
74
+ criticality="{path: 'connectedFieldElement>Criticality', formatter: 'AHModel.simplePath'}"
75
+ criticalityRepresentationType="{= (${connectedFieldElement>CriticalityRepresentation/EnumMember} === 'com.sap.vocabularies.UI.v1.CriticalityRepresentationType/WithoutIcon') ? 'WithoutIcon' : 'WithIcon'}" />
76
+ </sfi:objectStatus>
77
+ </sfi:ControlProposal>
78
+ </sfi:controlProposal>
79
+ </template:if>
69
80
  <sfi:customData>
70
81
  <template:with path="connectedFieldElement>Value" helper="AHModel.resolvePath" var="connectedFieldElementValue">
71
82
  <core:CustomData key="SideEffectSourcePropertyType"
@@ -183,6 +194,16 @@
183
194
  <smartlink:SemanticObjectController ignoredFields="{parts: [{path: 'quickView>/'}, {path: 'dataField>'}], formatter: 'AH.disableSemanticObjectLinksOnPopups'}" />
184
195
  </sfi:semanticObjectController>
185
196
  </template:if>
197
+ <template:if test="{= ${dataField>Criticality} }">
198
+ <sfi:controlProposal>
199
+ <sfi:ControlProposal>
200
+ <sfi:objectStatus>
201
+ <sfi:ObjectStatus criticality="{path: 'dataField>Criticality', formatter: 'AHModel.simplePath'}"
202
+ criticalityRepresentationType="{= (${dataField>CriticalityRepresentation/EnumMember} === 'com.sap.vocabularies.UI.v1.CriticalityRepresentationType/WithoutIcon') ? 'WithoutIcon' : 'WithIcon'}"/>
203
+ </sfi:objectStatus>
204
+ </sfi:ControlProposal>
205
+ </sfi:controlProposal>
206
+ </template:if>
186
207
  <sfi:customData>
187
208
  <core:CustomData key="SideEffectSourcePropertyType"
188
209
  value="{parts: [{path: 'dataFieldValue>name'}, {path: 'parameter>/isDraftEnabled'}, {path: 'parameter>/metaModel'}, {path: 'parameter>/entityType'}], formatter: 'AH.getSideEffectSourcePropertyType'}" />
@@ -14,6 +14,17 @@
14
14
  <smartField:configuration>
15
15
  <smartField:Configuration displayBehaviour="{parts: [{path: 'dataField>'}, {path: 'entitySet>'}, {path: 'dataFieldTarget>Data'}], formatter: 'AH.getTextArrangementForSCFields'}"/>
16
16
  </smartField:configuration>
17
+ <template:if test="{= ${dataField>Criticality}}">
18
+ <smartField:controlProposal>
19
+ <smartField:ControlProposal>
20
+ <smartField:objectStatus>
21
+ <smartField:ObjectStatus criticality="{path: 'dataField>Criticality', formatter: 'AHModel.simplePath'}"
22
+ criticalityRepresentationType="{= (${dataField>CriticalityRepresentation/EnumMember} === 'com.sap.vocabularies.UI.v1.CriticalityRepresentationType/WithoutIcon') ? 'WithoutIcon' : 'WithIcon'}"
23
+ ariaLabelledBy="{columnId>id}"/>
24
+ </smartField:objectStatus>
25
+ </smartField:ControlProposal>
26
+ </smartField:controlProposal>
27
+ </template:if>
17
28
  </smartField:SmartField>
18
29
  </template:then>
19
30
  <template:elseif test="{parts: [{path: 'listEntitySet>'}, {path: 'dataField>'}], formatter: 'AHStream.checkIfEntityOrAssociationHasStreamEnabled'}">
@@ -24,6 +24,7 @@ sap.ui.define([
24
24
  function SmartFilterBarWrapper(vTarget, oFactory, mParams) {
25
25
  var bIsApplying = false;
26
26
  var aBasicFilters = [];
27
+ var aMissingNavFilters = [];
27
28
  var oSmartFilterBar, oControlAssignedResolve, oPreliminaryState;
28
29
  var oControlAssignedPromise = new Promise(function (resolve) {
29
30
  oControlAssignedResolve = resolve;
@@ -81,9 +82,54 @@ sap.ui.define([
81
82
  /* SFB header state of a variant (standard or custom) gets determined by the Apply Automatically checkbox's value of the corresponding
82
83
  variant i.e. if the checkbox is checked, then the header should be collapsed and vice versa. */
83
84
  oSVMWrapperCallbacks.setHeaderState(!oEvent.getParameter("executeOnSelect"));
85
+ aMissingNavFilters = fnGetNavigationProperties();
84
86
  });
85
87
 
86
88
  }
89
+
90
+ function fnGetNavigationProperties() {
91
+ //Fetch the navigation properties
92
+ var oMetaModel = oSmartFilterBar.getModel().getMetaModel(),
93
+ sEntitySet = oSmartFilterBar.getEntitySet(),
94
+ oDataEntitySet = oMetaModel.getODataEntitySet(sEntitySet),
95
+ oDataEntityType = oMetaModel.getODataEntityType(oDataEntitySet.entityType),
96
+ oNavigationProperties = oDataEntityType['navigationProperty'],
97
+ aAddedNavigationProperties = [];
98
+ //Fetch the added filters in the current variant
99
+ var sCurrentVariantID = oSmartFilterBar.getVariantManagement().getCurrentVariantId();
100
+ var oCurrentVariant = oSmartFilterBar.getVariantManagement().getAllVariants().find(function(variant) {
101
+ return variant.getId() === sCurrentVariantID;
102
+ });
103
+ if (oCurrentVariant === undefined || oCurrentVariant.getContent() === undefined) {
104
+ return aAddedNavigationProperties;
105
+ }
106
+ var oSmartFilterBarVariant = JSON.parse( oCurrentVariant.getContent().searchListReportVariant.filterBarVariant );
107
+ delete oSmartFilterBarVariant["_CUSTOM"];
108
+ //Compare the filter source and navigation properties
109
+ var aMatchedRanges = [];
110
+ for (var key in oSmartFilterBarVariant) {
111
+ for (var i = 0; i < oNavigationProperties.length; i++) {
112
+ var obj = oNavigationProperties[i];
113
+ if (key.startsWith(obj.name)) {
114
+ if (oSmartFilterBarVariant[key].ranges) {
115
+ aMatchedRanges.push(oSmartFilterBarVariant[key].ranges);
116
+ }
117
+ }
118
+ }
119
+ }
120
+ if (aMatchedRanges.length) {
121
+ //Compare the manifest property with the filter source
122
+ var oManifestNavigationProperties = oSmartFilterBar.getNavigationProperties() || [];
123
+ var missingNavProperty = aMatchedRanges.filter(function(item) {
124
+ var sKeyField = item[0].keyField.split('.')[0];
125
+ return !oManifestNavigationProperties.includes(sKeyField);
126
+ });
127
+ if (missingNavProperty.length) {
128
+ aAddedNavigationProperties = aMatchedRanges;
129
+ }
130
+ }
131
+ return aAddedNavigationProperties;
132
+ }
87
133
 
88
134
  function fnGetState() {
89
135
  if (!oSmartFilterBar) {
@@ -242,6 +288,10 @@ sap.ui.define([
242
288
  oSmartFilterBar = oControl;
243
289
  oControlAssignedResolve(oSmartFilterBar);
244
290
  }
291
+
292
+ function fnGetMissingNavProperties() {
293
+ return aMissingNavFilters;
294
+ }
245
295
 
246
296
  // check waiting for initialization (like in SmartTableWrapper/SmartChartWrapper)
247
297
  // currently, whole appState restoring is waiting for initialized event from sfb - but probably it would be enough to wait for it here
@@ -256,7 +306,8 @@ sap.ui.define([
256
306
  // specific properties (needed to workaround direct connection between SFB and SVM)
257
307
  setSVMWrapperCallbacks: setSVMWrapperCallbacks,
258
308
  bVMConnection: oSmartFilterBar.getSmartVariant(),
259
- suppressSelection: oSmartFilterBar.setSuppressSelection.bind(oSmartFilterBar) // if multiple reasons for suppressing overlap, a counter (to avoid to early resume) could be implemented here
309
+ suppressSelection: oSmartFilterBar.setSuppressSelection.bind(oSmartFilterBar), // if multiple reasons for suppressing overlap, a counter (to avoid to early resume) could be implemented here
310
+ getMissingNavProperties: fnGetMissingNavProperties
260
311
  };
261
312
  }
262
313
 
@@ -53,9 +53,11 @@ sap.ui.define([
53
53
  // don't create UiState (managed object) from scratch, but fetch it from control and only apply known properties from state - thus, if any other properties would be added, we don't
54
54
  // interfere with them
55
55
  var oUiState = oControl.getUiState();
56
- oUiState.setPresentationVariant(oState.oUiState.oPresentationVariant);
57
- oUiState.setSelectionVariant(oState.oUiState.oSelectionVariant);
58
- oControl.setUiState(oUiState);
56
+ if (!oUiState.getProperty("variantName")){
57
+ oUiState.setPresentationVariant(oState.oUiState.oPresentationVariant);
58
+ oUiState.setSelectionVariant(oState.oUiState.oSelectionVariant);
59
+ oControl.setUiState(oUiState);
60
+ }
59
61
  bIsApplying = false;
60
62
  } else {
61
63
  // set standard variant to overcome "implicit personalization" (esp. for OP when navigating to different object in discovery mode)
@@ -198,7 +200,7 @@ sap.ui.define([
198
200
  setState: fnSetState,
199
201
  setControl: fnSetControl,
200
202
  attachStateChanged: fnAttachStateChanged,
201
- bVMConnection: bVariantManagementActive
203
+ bVMConnection: oSmartControl && oSmartControl.getSmartVariant && !!oSmartControl.getSmartVariant()
202
204
  };
203
205
  }
204
206
 
@@ -103,9 +103,9 @@ sap.ui.define([
103
103
  var oControl = oController.getView().byId(sId);
104
104
  if (oControl && oControl.isA("sap.ui.comp.smarttable.SmartTable")) {
105
105
  oControl.attachAfterVariantInitialise(function() {
106
- //set currentVariantId only when sVariantId is not standard (as it might be overriding existing
107
- //different currentVariantId) or smartTable's (oControl) currentVariantId is not equal to sVariantId.
108
- if (sVariantId !== '*standard*' && oControl.getCurrentVarintId && oControl.getCurrentVarintId() !== sVariantId) {
106
+ //set currentVariantId only when sVariantId is not standard (as it might be overriding existing
107
+ //different currentVariantId) or smartTable's (oControl) currentVariantId is not equal to sVariantId.
108
+ if (sVariantId !== '*standard*' && oControl.getCurrentVariantId && oControl.getCurrentVariantId() !== sVariantId) {
109
109
  oControl.setCurrentVariantId(sVariantId);
110
110
  oSmartVariantManagement.setModified(false);
111
111
  }
@@ -10,9 +10,10 @@ sap.ui.define(["sap/ui/model/odata/AnnotationHelper",
10
10
  "sap/m/library",
11
11
  "sap/ui/core/library",
12
12
  "sap/suite/ui/generic/template/genericUtilities/metadataAnalyser",
13
+ "sap/ui/base/ManagedObject",
13
14
  "sap/suite/ui/generic/template/js/RuntimeFormatters" // just to make sure that it is loaded
14
15
  ], function (AnnotationHelperModel, AnnotationHelperModelBasics, SmartField, FeLogger, formatMessage, deepExtend, StableIdHelper, utils, Device,
15
- SapMLibrary, SapCoreLibrary, metadataAnalyser) {
16
+ SapMLibrary, SapCoreLibrary, metadataAnalyser, ManagedObject) {
16
17
  "use strict";
17
18
 
18
19
  // shortcut for sap.ui.core.ValueState
@@ -3910,7 +3911,7 @@ sap.ui.define(["sap/ui/model/odata/AnnotationHelper",
3910
3911
  SmartLinks expect a boolean value for forceLinkRendering which is not covered in this function, as semanticObjectController covers all cases
3911
3912
  */
3912
3913
  hasQuickViewFacet: function (oEntitySet, oTargetEntities) {
3913
- return oTargetEntities[oEntitySet.entityType].sForceLinkRendering; //Example return value '\\{"ProductForEdit":"true"\\}'
3914
+ return ManagedObject.escapeSettingsValue(oTargetEntities[oEntitySet.entityType].sForceLinkRendering); //Example return value '\\{"ProductForEdit":"true"\\}'
3914
3915
  },
3915
3916
 
3916
3917
  /*
@@ -921,7 +921,7 @@ sap.ui.define([
921
921
  * @extends sap.ui.core.UIComponent
922
922
  * @abstract
923
923
  * @author SAP SE
924
- * @version 1.125.0
924
+ * @version 1.126.0
925
925
  * @name sap.suite.ui.generic.template.lib.AppComponent
926
926
  */
927
927
  var oAppComponent = UIComponent.extend("sap.suite.ui.generic.template.lib.AppComponent", {
@@ -26,11 +26,9 @@ sap.ui.define(["sap/ui/base/Object",
26
26
  "use strict";
27
27
 
28
28
  var GHOSTNAVIGATIONHANDLER = {
29
- storeInnerAppStateWithImmediateReturn: function(){
29
+ storeInnerAppStateAsync: function(){
30
30
  return {
31
- promise: {
32
- fail: Function.prototype
33
- }
31
+ fail: Function.prototype
34
32
  };
35
33
  },
36
34
  parseNavigation: function(){
@@ -523,15 +523,18 @@ sap.ui.define(["sap/ui/model/Context", "sap/suite/ui/generic/template/lib/Messag
523
523
  aTransientErrors.push(oMessage);
524
524
  }
525
525
  });
526
- var bHasStateError = aCurrentStateMessages.some(function(oMessage){
526
+ var bHasStateError = aCurrentStateMessages.some(function(oMessage) {
527
527
  return oMessage.type === "Error";
528
528
  });
529
529
  var bIsWarning = bIs412 && !bHasStateError;
530
- if (bIsWarning){
530
+ if (bIsWarning) {
531
531
  // Only show transient warnings in the confirmation popup if no state warning is available (note that backend sometimes sends warnings redundantly as transient and state message)
532
- var aMessagesForUserDecision = aCurrentStateMessages.length > 0 ? aCurrentStateMessages : aTransientWarnings;
532
+ var bHasStateWarning = aCurrentStateMessages.some(function(oMessage) {
533
+ return oMessage.type === "Warning";
534
+ });
535
+ var aMessagesForUserDecision = bHasStateWarning ? aCurrentStateMessages : aTransientWarnings;
533
536
  var oCustomMessageProvider = aCurrentStateMessages.length === 0 && { // if confirmation popup is to show transient messages these messages should be excluded from the
534
- isCustomMessage: function(oMessage){ // normal handling of transient messages (until the confirmation popup is closed)
537
+ isCustomMessage: function (oMessage) { // normal handling of transient messages (until the confirmation popup is closed)
535
538
  return aTransientWarnings.indexOf(oMessage) >= 0;
536
539
  }
537
540
  };
@@ -1350,7 +1350,6 @@ sap.ui.define(["sap/ui/base/Object",
1350
1350
  var oSmartTable = oEvent.getSource();
1351
1351
  var oTable = oSmartTable.getTable();
1352
1352
  var bIsMTable = controlHelper.isMTable(oTable);
1353
- var bIsTreeTable = controlHelper.isTreeTable(oTable);
1354
1353
  var oColumns = oTable.getColumns();
1355
1354
 
1356
1355
  if (!oCallbacks || (oCallbacks && oCallbacks.isPopinWithoutHeader) && bIsMTable) { //Setting popin display without header
@@ -1375,12 +1374,6 @@ sap.ui.define(["sap/ui/base/Object",
1375
1374
  };
1376
1375
  }
1377
1376
 
1378
- //For tree table, set the parameters "rootLevel" and "numberOfExpandedLevels"
1379
- if (bIsTreeTable) {
1380
- oBindingParams.parameters.rootLevel = oBindingParams.parameters.rootLevel || 0;
1381
- oBindingParams.parameters.numberOfExpandedLevels = oBindingParams.parameters.numberOfExpandedLevels || oCallbacks.numberOfExpandedLevels || 0;
1382
- }
1383
-
1384
1377
  //Get all the CustomData associated with Smarttable and create an object which is a key value pair of each custom data
1385
1378
  var aCustomData = oSmartTable.getCustomData();
1386
1379
  var oCustomData = {};