@sapui5/sap.fe.templates 1.105.1 → 1.107.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 (37) hide show
  1. package/package.json +2 -2
  2. package/src/sap/fe/templates/.library +1 -1
  3. package/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate.js +2 -2
  4. package/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate.ts +1 -1
  5. package/src/sap/fe/templates/Feedback.js +1 -1
  6. package/src/sap/fe/templates/Feedback.ts +0 -3
  7. package/src/sap/fe/templates/ListReport/ListReport.view.xml +2 -12
  8. package/src/sap/fe/templates/ListReport/ListReportController.controller.js +52 -66
  9. package/src/sap/fe/templates/ListReport/ListReportController.controller.ts +46 -61
  10. package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.js +1 -13
  11. package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.ts +0 -9
  12. package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.js +2 -2
  13. package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.ts +1 -1
  14. package/src/sap/fe/templates/ListReport/overrides/Share.js +4 -23
  15. package/src/sap/fe/templates/ListReport/overrides/Share.ts +5 -26
  16. package/src/sap/fe/templates/ListReport/overrides/ViewState.js +5 -5
  17. package/src/sap/fe/templates/ListReport/overrides/ViewState.ts +4 -4
  18. package/src/sap/fe/templates/ListReport/view/fragments/CollectionVisualization.fragment.xml +6 -1
  19. package/src/sap/fe/templates/ObjectPage/ExtensionAPI.js +133 -4
  20. package/src/sap/fe/templates/ObjectPage/ExtensionAPI.ts +90 -3
  21. package/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +4 -23
  22. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +38 -13
  23. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.ts +38 -14
  24. package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.js +29 -13
  25. package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.ts +27 -18
  26. package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.js +2 -2
  27. package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.ts +2 -1
  28. package/src/sap/fe/templates/ObjectPage/overrides/Share.js +2 -2
  29. package/src/sap/fe/templates/ObjectPage/overrides/Share.ts +1 -1
  30. package/src/sap/fe/templates/ObjectPage/view/fragments/Actions.fragment.xml +60 -48
  31. package/src/sap/fe/templates/ObjectPage/view/fragments/EditableHeaderFacet.fragment.xml +4 -4
  32. package/src/sap/fe/templates/ObjectPage/view/fragments/FormActionButtons.fragment.xml +5 -1
  33. package/src/sap/fe/templates/ObjectPage/view/fragments/HeadingContent.fragment.xml +30 -0
  34. package/src/sap/fe/templates/ObjectPage/view/fragments/HeadingTitle.fragment.xml +11 -8
  35. package/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.js +4 -4
  36. package/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.ts +3 -3
  37. package/src/sap/fe/templates/library.js +1 -1
@@ -1,12 +1,16 @@
1
+ import Log from "sap/base/Log";
1
2
  import CommonUtils from "sap/fe/core/CommonUtils";
2
3
  import { getSideContentLayoutID } from "sap/fe/core/converters/helpers/ID";
3
4
  import ExtensionAPI from "sap/fe/core/ExtensionAPI";
4
5
  import type { EnhanceWithUI5 } from "sap/fe/core/helpers/ClassSupport";
5
6
  import { defineUI5Class } from "sap/fe/core/helpers/ClassSupport";
6
- import type TableAPI from "sap/fe/macros/TableAPI";
7
+ import type TableAPI from "sap/fe/macros/table/TableAPI";
8
+ import { MessageType } from "sap/ui/core/library";
9
+ import Message from "sap/ui/core/message/Message";
7
10
  import type DynamicSideContent from "sap/ui/layout/DynamicSideContent";
8
11
  import type Context from "sap/ui/model/odata/v4/Context";
9
12
  import type ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
13
+ import ResourceModel from "sap/ui/model/resource/ResourceModel";
10
14
 
11
15
  /**
12
16
  * Extension API for object pages on SAP Fiori elements for OData V4.
@@ -90,14 +94,14 @@ class ObjectPageExtensionAPI extends ExtensionAPI {
90
94
  */
91
95
  getSelectedContexts(sTableId: string) {
92
96
  let oTable = this._view.byId(sTableId);
93
- if (oTable && oTable.isA("sap.fe.macros.TableAPI")) {
97
+ if (oTable && oTable.isA("sap.fe.macros.table.TableAPI")) {
94
98
  oTable = (oTable as EnhanceWithUI5<TableAPI>).getContent();
95
99
  }
96
100
  return (oTable && oTable.isA("sap.ui.mdc.Table") && (oTable as any).getSelectedContexts()) || [];
97
101
  }
98
102
 
99
103
  /**
100
- * Displays or hides the side content of an object page block.
104
+ * Displays or hides the side content of an object page.
101
105
  *
102
106
  * @alias sap.fe.templates.ObjectPage.ExtensionAPI#showSideContent
103
107
  * @param sSubSectionKey Key of the side content fragment as defined in the manifest.json
@@ -121,6 +125,89 @@ class ObjectPageExtensionAPI extends ExtensionAPI {
121
125
  getBindingContext() {
122
126
  return this._view.getBindingContext();
123
127
  }
128
+
129
+ /**
130
+ * Build a message to be displayed below the anchor bar.
131
+ *
132
+ * @alias sap.fe.templates.ObjectPage.ExtensionAPI#_buildOPMessage
133
+ * @param {sap.ui.core.message.Message[]} messages Array of messages used to generated the message
134
+ * @returns {Promise<Message>} Promise containing the generated message
135
+ * @private
136
+ */
137
+ async _buildOPMessage(messages: Message[]): Promise<Message | null> {
138
+ const view = this._view;
139
+ const resourceBundle = await (view.getModel("sap.fe.i18n") as ResourceModel).getResourceBundle();
140
+ let message: Message | null = null;
141
+ switch (messages.length) {
142
+ case 0:
143
+ break;
144
+ case 1:
145
+ message = messages[0];
146
+ break;
147
+ default:
148
+ const messageStats: { [key: string]: any } = {
149
+ "Error": { id: 2, count: 0 },
150
+ "Warning": { id: 1, count: 0 },
151
+ "Information": { id: 0, count: 0 }
152
+ };
153
+ message = messages.reduce((acc, currentValue) => {
154
+ const currentType = currentValue.getType();
155
+ acc.setType(messageStats[currentType].id > messageStats[acc.getType()].id ? currentType : acc.getType());
156
+ messageStats[currentType].count++;
157
+ return acc;
158
+ }, new Message({ type: MessageType.Information }));
159
+
160
+ if (messageStats.Error.count === 0 && messageStats.Warning.count === 0 && messageStats.Information.count > 0) {
161
+ message.setMessage(resourceBundle.getText("OBJECTPAGESTATE_INFORMATION"));
162
+ } else if ((messageStats.Error.count > 0 && messageStats.Warning.count > 0) || messageStats.Information.count > 0) {
163
+ message.setMessage(resourceBundle.getText("OBJECTPAGESTATE_ISSUE"));
164
+ } else {
165
+ message.setMessage(
166
+ resourceBundle.getText(
167
+ message.getType() === MessageType.Error ? "OBJECTPAGESTATE_ERROR" : "OBJECTPAGESTATE_WARNING"
168
+ )
169
+ );
170
+ }
171
+ }
172
+ return message;
173
+ }
174
+
175
+ /**
176
+ * Displays the message strip below the anchor bar.
177
+ *
178
+ * @alias sap.fe.templates.ObjectPage.ExtensionAPI#showMessages
179
+ * @param {sap.ui.core.message.Message} messages The message to be displayed
180
+ * @public
181
+ */
182
+
183
+ async showMessages(messages: Message[]) {
184
+ const view = this._view;
185
+ const internalModelContext = view.getBindingContext("internal");
186
+ try {
187
+ const message = await this._buildOPMessage(messages);
188
+ if (message) {
189
+ (internalModelContext as any)?.setProperty("OPMessageStripVisibility", true);
190
+ (internalModelContext as any)?.setProperty("OPMessageStripText", message.getMessage());
191
+ (internalModelContext as any)?.setProperty("OPMessageStripType", message.getType());
192
+ } else {
193
+ this.hideMessage();
194
+ }
195
+ } catch (err) {
196
+ Log.error("Cannot display ObjectPage message");
197
+ }
198
+ }
199
+
200
+ /**
201
+ * Hides the message strip below the anchor bar.
202
+ *
203
+ * @alias sap.fe.templates.ObjectPage.ExtensionAPI#hideMessage
204
+ * @public
205
+ */
206
+ hideMessage() {
207
+ const view = this._view;
208
+ const internalModelContext = view.getBindingContext("internal");
209
+ (internalModelContext as any)?.setProperty("OPMessageStripVisibility", false);
210
+ }
124
211
  }
125
212
 
126
213
  export default ObjectPageExtensionAPI;
@@ -15,11 +15,10 @@
15
15
  template:require="{
16
16
  MODEL: 'sap/ui/model/odata/v4/AnnotationHelper',
17
17
  OP: 'sap/fe/templates/ObjectPage/ObjectPageTemplating',
18
- CONTACT: 'sap/fe/macros/ContactHelper',
18
+ CONTACT: 'sap/fe/macros/contact/ContactHelper',
19
19
  UI: 'sap/fe/core/templating/UIFormatters',
20
20
  COMMON: 'sap/fe/macros/CommonHelper',
21
- COMMONFORMATTERS: 'sap/fe/core/templating/CommonFormatters',
22
- DATAFIELDHELPER : 'sap/fe/core/converters/helpers/DataFieldHelper'
21
+ COMMONFORMATTERS: 'sap/fe/core/templating/CommonFormatters'
23
22
  }"
24
23
  >
25
24
  <template:with path="entitySet>./" var="entityType">
@@ -127,28 +126,10 @@
127
126
  <uxap:ObjectPageDynamicHeaderTitle primaryArea="Begin" areaShrinkRatio="1:0:1.6">
128
127
  <core:Fragment fragmentName="sap.fe.templates.ObjectPage.view.fragments.Heading" type="XML" />
129
128
  <uxap:expandedContent>
130
- <FlexBox>
131
- <template:if
132
- test="{= !DATAFIELDHELPER.isReferencePropertyStaticallyHidden(${headerInfo>Description@@UI.getDataModelObjectPath})}"
133
- >
134
- <Label
135
- text="{= OP.getExpressionForDescription(${headerInfo>@@UI.getConverterContext}, ${fullContextPath>@@UI.getDataModelObjectPath})}"
136
- wrapping="true"
137
- />
138
- </template:if>
139
- </FlexBox>
129
+ <core:Fragment fragmentName="sap.fe.templates.ObjectPage.view.fragments.HeadingContent" type="XML" />
140
130
  </uxap:expandedContent>
141
131
  <uxap:snappedContent>
142
- <FlexBox>
143
- <template:if
144
- test="{= !DATAFIELDHELPER.isReferencePropertyStaticallyHidden(${headerInfo>Description@@UI.getDataModelObjectPath})}"
145
- >
146
- <Label
147
- text="{= OP.getExpressionForDescription(${headerInfo>@@UI.getConverterContext}, ${fullContextPath>@@UI.getDataModelObjectPath})}"
148
- wrapping="true"
149
- />
150
- </template:if>
151
- </FlexBox>
132
+ <core:Fragment fragmentName="sap.fe.templates.ObjectPage.view.fragments.HeadingContent" type="XML" />
152
133
  </uxap:snappedContent>
153
134
  <uxap:content>
154
135
  <template:if test="{entitySet>@com.sap.vocabularies.Common.v1.DraftRoot}">