@sapui5/sap.fe.templates 1.108.2 → 1.110.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 (94) hide show
  1. package/README.md +5 -1
  2. package/package.json +11 -8
  3. package/src/sap/fe/templates/.library +26 -27
  4. package/src/sap/fe/templates/AnalyticalListPage/Component.js +1 -7
  5. package/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate.js +1 -4
  6. package/src/sap/fe/templates/ListComponent.js +45 -62
  7. package/src/sap/fe/templates/ListComponent.ts +43 -43
  8. package/src/sap/fe/templates/ListReport/Component.js +11 -19
  9. package/src/sap/fe/templates/ListReport/Component.ts +6 -0
  10. package/src/sap/fe/templates/ListReport/ExtensionAPI.js +15 -36
  11. package/src/sap/fe/templates/ListReport/ExtensionAPI.ts +6 -1
  12. package/src/sap/fe/templates/ListReport/LRMessageStrip.js +196 -0
  13. package/src/sap/fe/templates/ListReport/LRMessageStrip.ts +216 -0
  14. package/src/sap/fe/templates/ListReport/ListReport.view.xml +31 -0
  15. package/src/sap/fe/templates/ListReport/ListReportController.controller.js +142 -247
  16. package/src/sap/fe/templates/ListReport/ListReportController.controller.ts +50 -15
  17. package/src/sap/fe/templates/ListReport/ListReportTemplating.js +2 -7
  18. package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.js +21 -108
  19. package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.ts +2 -2
  20. package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.js +9 -17
  21. package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.ts +3 -2
  22. package/src/sap/fe/templates/ListReport/overrides/Share.js +9 -25
  23. package/src/sap/fe/templates/ListReport/overrides/ViewState.js +51 -123
  24. package/src/sap/fe/templates/ListReport/overrides/ViewState.ts +5 -8
  25. package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.js +1 -23
  26. package/src/sap/fe/templates/ObjectPage/Component.js +19 -40
  27. package/src/sap/fe/templates/ObjectPage/Component.ts +11 -4
  28. package/src/sap/fe/templates/ObjectPage/ExtendPageDefinition.js +64 -0
  29. package/src/sap/fe/templates/ObjectPage/ExtendPageDefinition.ts +80 -0
  30. package/src/sap/fe/templates/ObjectPage/ExtensionAPI.js +24 -59
  31. package/src/sap/fe/templates/ObjectPage/ExtensionAPI.ts +8 -7
  32. package/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +2 -1
  33. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +182 -463
  34. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.ts +29 -31
  35. package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.js +129 -208
  36. package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.ts +62 -14
  37. package/src/sap/fe/templates/ObjectPage/components/DraftHandlerButton.js +1 -32
  38. package/src/sap/fe/templates/ObjectPage/components/DraftHandlerButton.tsx +3 -2
  39. package/src/sap/fe/templates/ObjectPage/controls/StashableHBox.js +9 -37
  40. package/src/sap/fe/templates/ObjectPage/controls/StashableVBox.js +1 -7
  41. package/src/sap/fe/templates/ObjectPage/controls/SubSectionBlock.js +9 -31
  42. package/src/sap/fe/templates/ObjectPage/designtime/FlexBox.designtime.js +1 -1
  43. package/src/sap/fe/templates/ObjectPage/designtime/StashableHBox.designtime.js +2 -4
  44. package/src/sap/fe/templates/ObjectPage/designtime/StashableVBox.designtime.js +1 -1
  45. package/src/sap/fe/templates/ObjectPage/flexibility/ScrollableHeaderContainer.flexibility.js +4 -5
  46. package/src/sap/fe/templates/ObjectPage/flexibility/StashableHBox.flexibility.js +4 -4
  47. package/src/sap/fe/templates/ObjectPage/flexibility/StashableHBox.flexibility.ts +3 -3
  48. package/src/sap/fe/templates/ObjectPage/flexibility/StashableVBox.flexibility.js +4 -4
  49. package/src/sap/fe/templates/ObjectPage/flexibility/StashableVBox.flexibility.ts +3 -3
  50. package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.js +16 -21
  51. package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.ts +1 -1
  52. package/src/sap/fe/templates/ObjectPage/overrides/InternalRouting.js +19 -1
  53. package/src/sap/fe/templates/ObjectPage/overrides/InternalRouting.ts +21 -0
  54. package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.js +1 -1
  55. package/src/sap/fe/templates/ObjectPage/overrides/Paginator.js +4 -5
  56. package/src/sap/fe/templates/ObjectPage/overrides/Share.js +19 -69
  57. package/src/sap/fe/templates/ObjectPage/overrides/Share.ts +1 -1
  58. package/src/sap/fe/templates/ObjectPage/overrides/ViewState.js +5 -20
  59. package/src/sap/fe/templates/ObjectPage/view/fragments/Actions.fragment.xml +6 -6
  60. package/src/sap/fe/templates/ObjectPage/view/fragments/EditableHeaderFacet.fragment.xml +4 -3
  61. package/src/sap/fe/templates/ObjectPage/view/fragments/FooterContent.fragment.xml +3 -3
  62. package/src/sap/fe/templates/ObjectPage/view/fragments/FormActions.fragment.xml +1 -1
  63. package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderContent.fragment.xml +1 -1
  64. package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderDataPoint.fragment.xml +1 -1
  65. package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderFacet.fragment.xml +4 -3
  66. package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderFacetCustomContainer.fragment.xml +7 -5
  67. package/src/sap/fe/templates/ObjectPage/view/fragments/HeadingAvatar.fragment.xml +1 -1
  68. package/src/sap/fe/templates/ObjectPage/view/fragments/HeadingContent.fragment.xml +1 -0
  69. package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderContact.fragment.xml +3 -2
  70. package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderForm.fragment.xml +2 -1
  71. package/src/sap/fe/templates/ObjectPage/view/fragments/SideContentCustomContainer.fragment.xml +7 -7
  72. package/src/sap/fe/templates/TableScroller.js +1 -6
  73. package/src/sap/fe/templates/library.js +4 -7
  74. package/src/sap/fe/templates/library.ts +1 -2
  75. package/src/sap/fe/templates/messagebundle.properties +30 -29
  76. package/src/sap/fe/templates/messagebundle_bg.properties +2 -2
  77. package/src/sap/fe/templates/messagebundle_cs.properties +1 -1
  78. package/src/sap/fe/templates/messagebundle_en_US_sappsd.properties +1 -1
  79. package/src/sap/fe/templates/messagebundle_en_US_saprigi.properties +1 -1
  80. package/src/sap/fe/templates/messagebundle_en_US_saptrc.properties +1 -1
  81. package/src/sap/fe/templates/messagebundle_es.properties +2 -2
  82. package/src/sap/fe/templates/messagebundle_et.properties +2 -2
  83. package/src/sap/fe/templates/messagebundle_no.properties +1 -1
  84. package/src/sap/fe/templates/messagebundle_ro.properties +2 -2
  85. package/src/sap/fe/templates/messagebundle_sl.properties +7 -7
  86. package/src/sap/fe/templates/messagebundle_th.properties +2 -2
  87. package/src/sap/fe/templates/messagebundle_vi.properties +2 -2
  88. package/src/sap/fe/templates/messagebundle_zh_CN.properties +2 -2
  89. package/ui5.yaml +0 -2
  90. package/src/sap/fe/templates/Feedback.js +0 -80
  91. package/src/sap/fe/templates/Feedback.ts +0 -64
  92. package/src/sap/fe/templates/ObjectPage/view/fragments/FormActionButtons.fragment.xml +0 -82
  93. package/src/sap/fe/templates/RootContainer/overrides/EditFlow.js +0 -20
  94. package/src/sap/fe/templates/RootContainer/overrides/EditFlow.ts +0 -20
@@ -6,10 +6,8 @@ import CommonUtils from "sap/fe/core/CommonUtils";
6
6
  import BusyLocker from "sap/fe/core/controllerextensions/BusyLocker";
7
7
  import { connect, disconnect, isConnected } from "sap/fe/core/controllerextensions/collaboration/ActivitySync";
8
8
  import { openManageDialog, showUserDetails } from "sap/fe/core/controllerextensions/collaboration/Manage";
9
- import EditFlow from "sap/fe/core/controllerextensions/EditFlow";
10
9
  import draft from "sap/fe/core/controllerextensions/editFlow/draft";
11
10
  import IntentBasedNavigation from "sap/fe/core/controllerextensions/IntentBasedNavigation";
12
- import InternalEditFlow from "sap/fe/core/controllerextensions/InternalEditFlow";
13
11
  import InternalIntentBasedNavigation from "sap/fe/core/controllerextensions/InternalIntentBasedNavigation";
14
12
  import InternalRouting from "sap/fe/core/controllerextensions/InternalRouting";
15
13
  import MassEdit from "sap/fe/core/controllerextensions/MassEdit";
@@ -19,13 +17,10 @@ import Paginator from "sap/fe/core/controllerextensions/Paginator";
19
17
  import Placeholder from "sap/fe/core/controllerextensions/Placeholder";
20
18
  import Share from "sap/fe/core/controllerextensions/Share";
21
19
  import ViewState from "sap/fe/core/controllerextensions/ViewState";
22
- import * as MetaModelConverter from "sap/fe/core/converters/MetaModelConverter";
23
20
  import { defineUI5Class, extensible, finalExtension, publicExtension, usingExtension } from "sap/fe/core/helpers/ClassSupport";
24
21
  import type { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
25
22
  import ModelHelper from "sap/fe/core/helpers/ModelHelper";
26
23
  import PageController from "sap/fe/core/PageController";
27
- import type RootContainerBaseController from "sap/fe/core/rootView/RootViewBaseController";
28
- import RootViewBaseController from "sap/fe/core/rootView/RootViewBaseController";
29
24
  import ChartRuntime from "sap/fe/macros/chart/ChartRuntime";
30
25
  import CommonHelper from "sap/fe/macros/CommonHelper";
31
26
  import DelegateUtil from "sap/fe/macros/DelegateUtil";
@@ -33,21 +28,19 @@ import TableUtils from "sap/fe/macros/table/Utils";
33
28
  import SelectionVariant from "sap/fe/navigation/SelectionVariant";
34
29
  import type { default as ObjectPageExtensionAPI } from "sap/fe/templates/ObjectPage/ExtensionAPI";
35
30
  import { default as ExtensionAPI } from "sap/fe/templates/ObjectPage/ExtensionAPI";
36
- import EditFlowOverrides from "sap/fe/templates/RootContainer/overrides/EditFlow";
37
31
  import TableScroller from "sap/fe/templates/TableScroller";
38
32
  import InstanceManager from "sap/m/InstanceManager";
39
33
  import Link from "sap/m/Link";
40
34
  import MessageBox from "sap/m/MessageBox";
41
35
  import type Popover from "sap/m/Popover";
42
36
  import Core from "sap/ui/core/Core";
43
- import Message from "sap/ui/core/message/Message";
37
+ import type Message from "sap/ui/core/message/Message";
44
38
  import OverrideExecution from "sap/ui/core/mvc/OverrideExecution";
45
39
  import type View from "sap/ui/core/mvc/View";
46
40
  import type Binding from "sap/ui/model/Binding";
47
41
  import type JSONModel from "sap/ui/model/json/JSONModel";
48
42
  import type Context from "sap/ui/model/odata/v4/Context";
49
43
  import ODataListBinding from "sap/ui/model/odata/v4/ODataListBinding";
50
- import type ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
51
44
  import type ODataModel from "sap/ui/model/odata/v4/ODataModel";
52
45
  import type ResourceModel from "sap/ui/model/resource/ResourceModel";
53
46
  import type BreadCrumbs from "sap/uxap/BreadCrumbs";
@@ -68,12 +61,8 @@ class ObjectPageController extends PageController {
68
61
  oView!: any;
69
62
  @usingExtension(Placeholder)
70
63
  placeholder!: Placeholder;
71
- @usingExtension(EditFlow)
72
- editFlow!: EditFlow;
73
64
  @usingExtension(Share.override(ShareOverrides))
74
65
  share!: Share;
75
- @usingExtension(InternalEditFlow.override(EditFlowOverrides))
76
- _editFlow!: InternalEditFlow;
77
66
  @usingExtension(InternalRouting.override(InternalRoutingOverride))
78
67
  _routing!: InternalRouting;
79
68
  @usingExtension(Paginator.override(PaginatorOverride))
@@ -138,7 +127,7 @@ class ObjectPageController extends PageController {
138
127
 
139
128
  // Setting defaults of internal model context
140
129
  const oInternalModelContext = this.getView().getBindingContext("internal") as InternalModelContext;
141
- oInternalModelContext?.setProperty("externalNavigationContext", { "page": true });
130
+ oInternalModelContext?.setProperty("externalNavigationContext", { page: true });
142
131
  oInternalModelContext?.setProperty("relatedApps", {
143
132
  visibility: false,
144
133
  items: null
@@ -151,6 +140,8 @@ class ObjectPageController extends PageController {
151
140
  }
152
141
  this.messageButton = this.getView().byId("fe::FooterBar::MessageButton");
153
142
  this.messageButton.oItemBinding.attachChange(this._fnShowOPMessage, this);
143
+ oInternalModelContext?.setProperty("rootEditEnabled", true);
144
+ oInternalModelContext?.setProperty("rootEditVisible", true);
154
145
  }
155
146
 
156
147
  onExit() {
@@ -240,7 +231,7 @@ class ObjectPageController extends PageController {
240
231
  if (
241
232
  opContext &&
242
233
  opContext.hasPendingChanges() &&
243
- !aBatchGroups.some((opContext.getModel() as ODataModel).hasPendingChanges.bind(opContext.getModel()))
234
+ !aBatchGroups.some(opContext.getModel().hasPendingChanges.bind(opContext.getModel()))
244
235
  ) {
245
236
  /* In case there are pending changes for the creation row and no others we need to reset the changes
246
237
  TODO: this is just a quick solution, this needs to be reworked
@@ -506,7 +497,7 @@ class ObjectPageController extends PageController {
506
497
  });
507
498
  CommonUtils.getSemanticTargetsFromPageModel(this, "_pageModel");
508
499
  //Retrieve Object Page header actions from Object Page title control
509
- const oObjectPageTitle = oObjectPage.getHeaderTitle();
500
+ const oObjectPageTitle = oObjectPage.getHeaderTitle() as ObjectPageDynamicHeaderTitle;
510
501
  let aIBNHeaderActions: any[] = [];
511
502
  aIBNHeaderActions = CommonUtils.getIBNActions(oObjectPageTitle, aIBNHeaderActions);
512
503
  aIBNActions = aIBNActions.concat(aIBNHeaderActions);
@@ -599,7 +590,6 @@ class ObjectPageController extends PageController {
599
590
  Log.error("Error while waiting for the final UI State", oError);
600
591
  });
601
592
  }
602
-
603
593
  // update related apps once Data is received in case of binding cache is not available
604
594
  // TODO: this is only a temp solution since we need to call _updateRelatedApps method only after data for Object Page is received (if there is no binding)
605
595
  if (oBindingContext.getBinding().oCache) {
@@ -634,6 +624,9 @@ class ObjectPageController extends PageController {
634
624
  // should be called only after binding is ready hence calling it in onAfterBinding
635
625
  (oObjectPage as any)._triggerVisibleSubSectionsEvents();
636
626
  }
627
+
628
+ //To Compute the Edit Binding of the subObject page using root object page, create a context for draft root and update the edit button in sub OP using the context
629
+ ActionRuntime.updateEditButtonVisibilityAndEnablement(this.getView());
637
630
  }
638
631
  }
639
632
 
@@ -669,9 +662,10 @@ class ObjectPageController extends PageController {
669
662
  oAppComponent.getShellServices().setBackNavigation(() => this._onBackNavigationInDraft(oBindingContext));
670
663
  }
671
664
  }
665
+ const viewId = this.getView().getId();
672
666
  this.getAppComponent()
673
667
  .getAppStateHandler()
674
- .applyAppState()
668
+ .applyAppState(viewId, this.getView())
675
669
  .then(() => {
676
670
  if (mParameters.forceFocus) {
677
671
  setFocus();
@@ -694,7 +688,7 @@ class ObjectPageController extends PageController {
694
688
  const oBindingContext = this.getView().getBindingContext && (this.getView().getBindingContext() as Context);
695
689
  let bIsStickyEditMode = false;
696
690
  if (oBindingContext) {
697
- const bIsStickyMode = ModelHelper.isStickySessionSupported(oBindingContext.getModel().getMetaModel() as ODataMetaModel);
691
+ const bIsStickyMode = ModelHelper.isStickySessionSupported(oBindingContext.getModel().getMetaModel());
698
692
  if (bIsStickyMode) {
699
693
  bIsStickyEditMode = this.getView().getModel("ui").getProperty("/isEditable");
700
694
  }
@@ -726,7 +720,9 @@ class ObjectPageController extends PageController {
726
720
  .find(function (oElement: any) {
727
721
  return oElement.getId() === sButtonId;
728
722
  });
729
- CommonUtils.fireButtonPress(oButton);
723
+ if (oButton) {
724
+ CommonUtils.fireButtonPress(oButton);
725
+ }
730
726
  }
731
727
 
732
728
  _executeFooterShortcut(sId: any) {
@@ -808,6 +804,7 @@ class ObjectPageController extends PageController {
808
804
  BusyLocker.unlock(oModel);
809
805
  });
810
806
  }
807
+
811
808
  /**
812
809
  * Gets the context of the DraftRoot path.
813
810
  * If a view has been created with the draft Root Path, this method returns its bindingContext.
@@ -826,7 +823,8 @@ class ObjectPageController extends PageController {
826
823
  let simpleDraftRootContext: V4Context;
827
824
  if (draftRootContextPath) {
828
825
  // Check if a view matches with the draft root path
829
- const existingBindingContextOnPage = (this.getAppComponent().getRootViewController() as RootViewBaseController)
826
+ const existingBindingContextOnPage = this.getAppComponent()
827
+ .getRootViewController()
830
828
  .getInstancedViews()
831
829
  .find((pageView: View) => pageView.getBindingContext()?.getPath() === draftRootContextPath)
832
830
  ?.getBindingContext() as V4Context;
@@ -839,11 +837,8 @@ class ObjectPageController extends PageController {
839
837
  return simpleDraftRootContext;
840
838
  }
841
839
  const model = context.getModel();
842
- const metaModel = model.getMetaModel();
843
- const sEntityPath = metaModel.getMetaPath(draftRootContextPath);
844
- const mDataModel = MetaModelConverter.getInvolvedDataModelObjects(metaModel.getContext(sEntityPath));
845
840
  simpleDraftRootContext = model.bindContext(draftRootContextPath).getBoundContext();
846
- await simpleDraftRootContext.requestProperty(mDataModel.targetEntityType.keys[0]?.name);
841
+ await CommonUtils.waitForContextRequested(simpleDraftRootContext);
847
842
  // Store this new created context to use it on the next iterations
848
843
  internalModel.setProperty("/simpleDraftRootContext", simpleDraftRootContext);
849
844
  return simpleDraftRootContext;
@@ -988,8 +983,8 @@ class ObjectPageController extends PageController {
988
983
  if (oElement && oElement.isA && oElement.isA("sap.ui.mdc.Table")) {
989
984
  aControls.push(oElement);
990
985
  aSubSectionTables.push({
991
- "table": oElement,
992
- "gridTable": oElement.getType().isA("sap.ui.mdc.table.GridTableType")
986
+ table: oElement,
987
+ gridTable: oElement.getType().isA("sap.ui.mdc.table.GridTableType")
993
988
  });
994
989
  }
995
990
 
@@ -1117,7 +1112,7 @@ class ObjectPageController extends PageController {
1117
1112
  sPathLine;
1118
1113
 
1119
1114
  const sPagePath = oPageContext.getPath();
1120
- const oMetaModel = oPageContext && oPageContext.getModel() && (oPageContext.getModel().getMetaModel() as ODataMetaModel);
1115
+ const oMetaModel = oPageContext && oPageContext.getModel() && oPageContext.getModel().getMetaModel();
1121
1116
  const sMetaPathPage = oMetaModel && oMetaModel.getMetaPath(sPagePath).replace(/^\/*/, "");
1122
1117
 
1123
1118
  // Get single line context if necessary
@@ -1203,7 +1198,7 @@ class ObjectPageController extends PageController {
1203
1198
  aPathParts.splice(-1, 1);
1204
1199
  aPathParts.forEach(function (sPathPart: any) {
1205
1200
  sPath += `/${sPathPart}`;
1206
- const oRootViewController = oAppComponent.getRootViewController() as RootContainerBaseController;
1201
+ const oRootViewController = oAppComponent.getRootViewController();
1207
1202
  const sParameterPath = oMetaModel.getMetaPath(sPath);
1208
1203
  const bResultContext = oMetaModel.getObject(`${sParameterPath}/@com.sap.vocabularies.Common.v1.ResultContext`);
1209
1204
  if (bResultContext) {
@@ -1238,7 +1233,7 @@ class ObjectPageController extends PageController {
1238
1233
  const oView = this.getView();
1239
1234
  const oInternalModelContext = oView.getBindingContext("internal") as InternalModelContext;
1240
1235
  const oDataPoints = CommonUtils.getHeaderFacetItemConfigForExternalNavigation(
1241
- oView.getViewData(),
1236
+ oView.getViewData() as Record<string, unknown>,
1242
1237
  this.getAppComponent().getRoutingService().getOutbounds()
1243
1238
  );
1244
1239
  const oShellServices = this.getAppComponent().getShellServices();
@@ -1368,7 +1363,7 @@ class ObjectPageController extends PageController {
1368
1363
  if (mConditions.positiveActionEnabled) {
1369
1364
  oController.handlers.onCallAction(oView, sActionName, mParameters);
1370
1365
  }
1371
- } else if (mConditions.editActionVisible && iViewLevel === 1) {
1366
+ } else if (mConditions.editActionVisible) {
1372
1367
  if (mConditions.editActionEnabled) {
1373
1368
  oController._editDocument(oContext);
1374
1369
  }
@@ -1557,7 +1552,7 @@ class ObjectPageController extends PageController {
1557
1552
  const sTitle = CommonUtils.getTranslatedText(
1558
1553
  "C_ROUTING_NAVIGATION_DISABLED_TITLE",
1559
1554
  oResourceBundle,
1560
- null,
1555
+ undefined,
1561
1556
  (oController.getView().getViewData() as any).entitySet
1562
1557
  );
1563
1558
  Log.error(sTitle);
@@ -1580,6 +1575,9 @@ class ObjectPageController extends PageController {
1580
1575
  },
1581
1576
  onStateChange(this: ObjectPageController) {
1582
1577
  this.getExtensionAPI().updateAppState();
1578
+ },
1579
+ closeOPMessageStrip: function (this: ObjectPageController) {
1580
+ this.getExtensionAPI().hideMessage();
1583
1581
  }
1584
1582
  };
1585
1583
  }