@sapui5/sap.fe.templates 1.103.0 → 1.106.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 (132) hide show
  1. package/package.json +5 -6
  2. package/src/sap/fe/templates/.library +1 -1
  3. package/src/sap/fe/templates/AnalyticalListPage/Component.js +2 -2
  4. package/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate.js +2 -2
  5. package/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate.ts +1 -1
  6. package/src/sap/fe/templates/Feedback.js +1 -1
  7. package/src/sap/fe/templates/Feedback.ts +0 -3
  8. package/src/sap/fe/templates/ListComponent.js +2 -2
  9. package/src/sap/fe/templates/ListReport/Component.js +2 -2
  10. package/src/sap/fe/templates/ListReport/ExtensionAPI.js +5 -3
  11. package/src/sap/fe/templates/ListReport/ExtensionAPI.ts +2 -1
  12. package/src/sap/fe/templates/ListReport/ListReport.view.xml +12 -86
  13. package/src/sap/fe/templates/ListReport/ListReportController.controller.js +90 -429
  14. package/src/sap/fe/templates/ListReport/ListReportController.controller.ts +81 -392
  15. package/src/sap/fe/templates/ListReport/ListReportTemplating.js +1 -1
  16. package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.js +459 -0
  17. package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.ts +338 -0
  18. package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.js +16 -9
  19. package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.ts +15 -9
  20. package/src/sap/fe/templates/ListReport/overrides/Share.js +4 -12
  21. package/src/sap/fe/templates/ListReport/overrides/Share.ts +4 -12
  22. package/src/sap/fe/templates/ListReport/overrides/ViewState.js +23 -31
  23. package/src/sap/fe/templates/ListReport/overrides/ViewState.ts +27 -31
  24. package/src/sap/fe/templates/ListReport/view/fragments/Chart.fragment.xml +3 -0
  25. package/src/sap/fe/templates/ListReport/view/fragments/CollectionVisualization.fragment.xml +16 -5
  26. package/src/sap/fe/templates/{controls → ListReport/view/fragments}/MacroChart.fragment.xml +3 -2
  27. package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.js +20 -4
  28. package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.ts +80 -48
  29. package/src/sap/fe/templates/{controls → ListReport/view/fragments}/Table.fragment.xml +6 -6
  30. package/src/sap/fe/templates/ListReport/view/fragments/VariantManagement.fragment.xml +31 -0
  31. package/src/sap/fe/templates/ObjectPage/Component.js +9 -9
  32. package/src/sap/fe/templates/ObjectPage/Component.ts +10 -6
  33. package/src/sap/fe/templates/ObjectPage/ExtensionAPI.js +25 -12
  34. package/src/sap/fe/templates/ObjectPage/ExtensionAPI.ts +18 -5
  35. package/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +60 -151
  36. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +195 -140
  37. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.ts +103 -93
  38. package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.js +52 -22
  39. package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.ts +46 -25
  40. package/src/sap/fe/templates/ObjectPage/components/DraftHandlerButton.js +178 -0
  41. package/src/sap/fe/templates/ObjectPage/components/DraftHandlerButton.tsx +132 -0
  42. package/src/sap/fe/templates/ObjectPage/controls/StashableHBox.js +2 -2
  43. package/src/sap/fe/templates/ObjectPage/controls/StashableVBox.js +2 -2
  44. package/src/sap/fe/templates/ObjectPage/controls/SubSectionBlock.js +2 -2
  45. package/src/sap/fe/templates/ObjectPage/designtime/FlexBox.designtime.js +1 -1
  46. package/src/sap/fe/templates/ObjectPage/designtime/StashableHBox.designtime.js +1 -1
  47. package/src/sap/fe/templates/ObjectPage/designtime/StashableVBox.designtime.js +1 -1
  48. package/src/sap/fe/templates/ObjectPage/flexibility/StashableHBox.flexibility.js +1 -1
  49. package/src/sap/fe/templates/ObjectPage/flexibility/StashableVBox.flexibility.js +1 -1
  50. package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.js +1 -1
  51. package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.ts +1 -1
  52. package/src/sap/fe/templates/ObjectPage/overrides/InternalRouting.js +1 -1
  53. package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.js +1 -1
  54. package/src/sap/fe/templates/ObjectPage/overrides/Paginator.js +1 -1
  55. package/src/sap/fe/templates/ObjectPage/overrides/Share.js +55 -29
  56. package/src/sap/fe/templates/ObjectPage/overrides/Share.ts +28 -29
  57. package/src/sap/fe/templates/ObjectPage/overrides/ViewState.js +1 -1
  58. package/src/sap/fe/templates/ObjectPage/view/fragments/Actions.fragment.xml +62 -62
  59. package/src/sap/fe/templates/ObjectPage/view/fragments/Chart.fragment.xml +13 -0
  60. package/src/sap/fe/templates/ObjectPage/view/fragments/EditableHeaderFacet.fragment.xml +10 -8
  61. package/src/sap/fe/templates/ObjectPage/view/fragments/FooterContent.fragment.xml +1 -1
  62. package/src/sap/fe/templates/ObjectPage/view/fragments/FormActionButtons.fragment.xml +5 -1
  63. package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderDataPoint.fragment.xml +1 -1
  64. package/src/sap/fe/templates/ObjectPage/view/fragments/Heading.fragment.xml +2 -2
  65. package/src/sap/fe/templates/ObjectPage/view/fragments/HeadingTitle.fragment.xml +11 -6
  66. package/src/sap/fe/templates/ObjectPage/view/fragments/MacroChart.fragment.xml +22 -0
  67. package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderForm.fragment.xml +7 -2
  68. package/src/sap/fe/templates/ObjectPage/view/fragments/Section.fragment.xml +8 -49
  69. package/src/sap/fe/templates/ObjectPage/view/fragments/SectionPresentationVisualization.fragment.xml +1 -1
  70. package/src/sap/fe/templates/ObjectPage/view/fragments/Table.fragment.xml +23 -0
  71. package/src/sap/fe/templates/RootContainer/controller/Fcl.controller.js +2 -2
  72. package/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.js +2 -2
  73. package/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.js +5 -5
  74. package/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.ts +3 -3
  75. package/src/sap/fe/templates/RootContainer/overrides/EditFlow.js +1 -1
  76. package/src/sap/fe/templates/TableScroller.js +1 -1
  77. package/src/sap/fe/templates/library.js +4 -3
  78. package/src/sap/fe/templates/library.ts +2 -0
  79. package/src/sap/fe/templates/messagebundle.properties +2 -5
  80. package/src/sap/fe/templates/messagebundle_ar.properties +3 -12
  81. package/src/sap/fe/templates/messagebundle_bg.properties +2 -11
  82. package/src/sap/fe/templates/messagebundle_ca.properties +2 -11
  83. package/src/sap/fe/templates/messagebundle_cs.properties +3 -12
  84. package/src/sap/fe/templates/messagebundle_cy.properties +2 -11
  85. package/src/sap/fe/templates/messagebundle_da.properties +3 -12
  86. package/src/sap/fe/templates/messagebundle_de.properties +2 -11
  87. package/src/sap/fe/templates/messagebundle_el.properties +2 -11
  88. package/src/sap/fe/templates/messagebundle_en.properties +2 -11
  89. package/src/sap/fe/templates/messagebundle_en_GB.properties +2 -11
  90. package/src/sap/fe/templates/messagebundle_en_US_sappsd.properties +2 -11
  91. package/src/sap/fe/templates/messagebundle_en_US_saprigi.properties +2 -11
  92. package/src/sap/fe/templates/messagebundle_en_US_saptrc.properties +2 -11
  93. package/src/sap/fe/templates/messagebundle_es.properties +0 -9
  94. package/src/sap/fe/templates/messagebundle_es_MX.properties +2 -11
  95. package/src/sap/fe/templates/messagebundle_et.properties +0 -9
  96. package/src/sap/fe/templates/messagebundle_fi.properties +2 -11
  97. package/src/sap/fe/templates/messagebundle_fr.properties +3 -12
  98. package/src/sap/fe/templates/messagebundle_fr_CA.properties +2 -11
  99. package/src/sap/fe/templates/messagebundle_hi.properties +2 -11
  100. package/src/sap/fe/templates/messagebundle_hr.properties +2 -11
  101. package/src/sap/fe/templates/messagebundle_hu.properties +2 -11
  102. package/src/sap/fe/templates/messagebundle_id.properties +2 -11
  103. package/src/sap/fe/templates/messagebundle_it.properties +2 -11
  104. package/src/sap/fe/templates/messagebundle_iw.properties +2 -11
  105. package/src/sap/fe/templates/messagebundle_ja.properties +2 -11
  106. package/src/sap/fe/templates/messagebundle_kk.properties +2 -11
  107. package/src/sap/fe/templates/messagebundle_ko.properties +2 -11
  108. package/src/sap/fe/templates/messagebundle_lt.properties +2 -11
  109. package/src/sap/fe/templates/messagebundle_lv.properties +2 -11
  110. package/src/sap/fe/templates/messagebundle_ms.properties +2 -11
  111. package/src/sap/fe/templates/messagebundle_nl.properties +2 -11
  112. package/src/sap/fe/templates/messagebundle_no.properties +0 -9
  113. package/src/sap/fe/templates/messagebundle_pl.properties +0 -9
  114. package/src/sap/fe/templates/messagebundle_pt.properties +2 -11
  115. package/src/sap/fe/templates/messagebundle_pt_PT.properties +2 -11
  116. package/src/sap/fe/templates/messagebundle_ro.properties +0 -9
  117. package/src/sap/fe/templates/messagebundle_ru.properties +2 -11
  118. package/src/sap/fe/templates/messagebundle_sh.properties +2 -11
  119. package/src/sap/fe/templates/messagebundle_sk.properties +2 -11
  120. package/src/sap/fe/templates/messagebundle_sl.properties +2 -11
  121. package/src/sap/fe/templates/messagebundle_sv.properties +2 -11
  122. package/src/sap/fe/templates/messagebundle_th.properties +1 -10
  123. package/src/sap/fe/templates/messagebundle_tr.properties +2 -11
  124. package/src/sap/fe/templates/messagebundle_uk.properties +2 -11
  125. package/src/sap/fe/templates/messagebundle_vi.properties +0 -9
  126. package/src/sap/fe/templates/messagebundle_zh_CN.properties +0 -9
  127. package/src/sap/fe/templates/messagebundle_zh_TW.properties +2 -11
  128. package/src/sap/fe/templates/ListReport/view/fragments/MultipleModeOld.fragment.xml +0 -50
  129. package/src/sap/fe/templates/ObjectPage/handler/DraftHandler.js +0 -103
  130. package/src/sap/fe/templates/ObjectPage/handler/DraftHandler.ts +0 -97
  131. package/src/sap/fe/templates/ObjectPage/view/fragments/SwitchDraftAndActiveObjectPopOver.fragment.xml +0 -27
  132. package/src/sap/fe/templates/controls/Chart.fragment.xml +0 -25
@@ -1,6 +1,7 @@
1
1
  import type ResourceBundle from "sap/base/i18n/ResourceBundle";
2
2
  import Log from "sap/base/Log";
3
3
  import merge from "sap/base/util/merge";
4
+ import ActionRuntime from "sap/fe/core/ActionRuntime";
4
5
  import CommonUtils from "sap/fe/core/CommonUtils";
5
6
  import BusyLocker from "sap/fe/core/controllerextensions/BusyLocker";
6
7
  import { connect } from "sap/fe/core/controllerextensions/collaboration/ActivitySync";
@@ -39,17 +40,17 @@ import type Popover from "sap/m/Popover";
39
40
  import Core from "sap/ui/core/Core";
40
41
  import OverrideExecution from "sap/ui/core/mvc/OverrideExecution";
41
42
  import type Binding from "sap/ui/model/Binding";
42
- import JSONModel from "sap/ui/model/json/JSONModel";
43
+ import type JSONModel from "sap/ui/model/json/JSONModel";
43
44
  import type Context from "sap/ui/model/odata/v4/Context";
44
45
  import ODataListBinding from "sap/ui/model/odata/v4/ODataListBinding";
45
46
  import type ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
46
47
  import type ODataModel from "sap/ui/model/odata/v4/ODataModel";
47
48
  import type ResourceModel from "sap/ui/model/resource/ResourceModel";
49
+ import type BreadCrumbs from "sap/uxap/BreadCrumbs";
48
50
  import type ObjectPageDynamicHeaderTitle from "sap/uxap/ObjectPageDynamicHeaderTitle";
49
51
  import type ObjectPageLayout from "sap/uxap/ObjectPageLayout";
50
52
  import type ObjectPageSection from "sap/uxap/ObjectPageSection";
51
53
  import type ObjectPageSubSection from "sap/uxap/ObjectPageSubSection";
52
- import DraftHandler from "./handler/DraftHandler";
53
54
  import IntentBasedNavigationOverride from "./overrides/IntentBasedNavigation";
54
55
  import InternalRoutingOverride from "./overrides/InternalRouting";
55
56
  import MessageHandlerOverride from "./overrides/MessageHandler";
@@ -257,18 +258,26 @@ class ObjectPageController extends PageController {
257
258
  if (oBinding.isA("sap.ui.model.odata.v4.ODataListBinding")) {
258
259
  this.paginator.initialize(oBinding, oContext);
259
260
  } else {
260
- //if the binding type is not ODataListBinding because of a deeplink navigation or a refresh of the page
261
+ // if the binding type is not ODataListBinding because of a deeplink navigation or a refresh of the page
261
262
  // we need to create it
262
- const sContextPath = oBinding.getPath().replace(/\([^\)]*\)*$/, ""); //removing the last tuple
263
- oBinding = new (ODataListBinding as any)(oBinding.oModel, "", oBinding.oModel.createBindingContext(sContextPath));
264
- const _setListBindingAsync = () => {
265
- if (oBinding.getContexts().length > 0) {
266
- this.paginator.initialize(oBinding, oContext);
267
- oBinding.detachEvent("change", _setListBindingAsync);
268
- }
269
- };
270
- oBinding.getContexts(0);
271
- oBinding.attachEvent("change", _setListBindingAsync);
263
+ const sBindingPath = oBinding.getPath();
264
+ if (/\([^\)]*\)$/.test(sBindingPath)) {
265
+ // The current binding path ends with (xxx), so we create the listBinding by removing (xxx)
266
+ const sListBindingPath = sBindingPath.replace(/\([^\)]*\)$/, "");
267
+ oBinding = new (ODataListBinding as any)(oBinding.oModel, sListBindingPath);
268
+ const _setListBindingAsync = () => {
269
+ if (oBinding.getContexts().length > 0) {
270
+ this.paginator.initialize(oBinding, oContext);
271
+ oBinding.detachEvent("change", _setListBindingAsync);
272
+ }
273
+ };
274
+
275
+ oBinding.getContexts(0);
276
+ oBinding.attachEvent("change", _setListBindingAsync);
277
+ } else {
278
+ // The current binding doesn't end with (xxx) --> the last segment is a 1-1 navigation, so we don't display the paginator
279
+ this.paginator.initialize(undefined);
280
+ }
272
281
  }
273
282
  }
274
283
  }
@@ -392,6 +401,7 @@ class ObjectPageController extends PageController {
392
401
  }
393
402
 
394
403
  _onBackNavigationInDraft(oContext: any) {
404
+ this.messageHandler.removeTransitionMessages();
395
405
  if (this.getAppComponent().getRouterProxy().checkIfBackHasSameContext()) {
396
406
  // Back nav will keep the same context --> no need to display the dialog
397
407
  history.back();
@@ -459,7 +469,9 @@ class ObjectPageController extends PageController {
459
469
  ),
460
470
  aSelectedContexts = oTable.getSelectedContexts();
461
471
 
462
- CommonUtils.setActionEnablement(oInternalModelContext, oActionOperationAvailableMap, aSelectedContexts);
472
+ ActionRuntime.setActionEnablement(oInternalModelContext, oActionOperationAvailableMap, aSelectedContexts, "table");
473
+ // Clear the selection in the table, need to be fixed and review with BLI: FIORITECHP1-24318
474
+ oTable.clearSelection();
463
475
  });
464
476
  CommonUtils.getSemanticTargetsFromPageModel(this, "_pageModel");
465
477
  //Retrieve Object Page header actions from Object Page title control
@@ -477,40 +489,35 @@ class ObjectPageController extends PageController {
477
489
  * @param oTable
478
490
  * @param oListBinding
479
491
  */
480
- function enableFastCreationRow(oTable: any, oListBinding: any) {
492
+ async function enableFastCreationRow(oTable: any, oListBinding: any) {
481
493
  const oFastCreationRow = oTable.getCreationRow();
482
494
  let oFastCreationListBinding, oFastCreationContext;
483
495
 
484
496
  if (oFastCreationRow) {
485
- oFinalUIState
486
- .then(function () {
487
- if (oFastCreationRow.getModel("ui").getProperty("/isEditable")) {
488
- oFastCreationListBinding = oModel.bindList(oListBinding.getPath(), oListBinding.getContext(), [], [], {
489
- $$updateGroupId: "doNotSubmit",
490
- $$groupId: "doNotSubmit"
491
- });
492
- // Workaround suggested by OData model v4 colleagues
493
- oFastCreationListBinding.refreshInternal = function () {
494
- /* do nothing */
495
- };
496
- /*
497
- oFastCreationListBinding.hasPendingChanges = function() {
498
- return false;
499
- };
500
- */
501
-
502
- oFastCreationContext = oFastCreationListBinding.create();
503
- oFastCreationRow.setBindingContext(oFastCreationContext);
504
-
505
- // this is needed to avoid console error
506
- oFastCreationContext.created().catch(function () {
507
- Log.trace("transient fast creation context deleted");
508
- });
497
+ try {
498
+ await oFinalUIState;
499
+ if (oFastCreationRow.getModel("ui").getProperty("/isEditable")) {
500
+ oFastCreationListBinding = oModel.bindList(oListBinding.getPath(), oListBinding.getContext(), [], [], {
501
+ $$updateGroupId: "doNotSubmit",
502
+ $$groupId: "doNotSubmit"
503
+ });
504
+ // Workaround suggested by OData model v4 colleagues
505
+ oFastCreationListBinding.refreshInternal = function () {
506
+ /* do nothing */
507
+ };
508
+ oFastCreationContext = oFastCreationListBinding.create();
509
+ oFastCreationRow.setBindingContext(oFastCreationContext);
510
+
511
+ // this is needed to avoid console error
512
+ try {
513
+ await oFastCreationContext.created();
514
+ } catch (e) {
515
+ Log.trace("transient fast creation context deleted");
509
516
  }
510
- })
511
- .catch(function (oError: any) {
512
- Log.error("Error while computing the final UI state", oError);
513
- });
517
+ }
518
+ } catch (oError: any) {
519
+ Log.error("Error while computing the final UI state", oError);
520
+ }
514
521
  }
515
522
  }
516
523
 
@@ -739,7 +746,11 @@ class ObjectPageController extends PageController {
739
746
  if (err) {
740
747
  Log.error(err);
741
748
  }
742
- if (!(this.getAppComponent().getRootContainer() as any).getCurrentPage().isA("sap.m.MessagePage")) {
749
+ const rootViewController = this.getAppComponent().getRootViewController() as any;
750
+ const currentPageView = rootViewController.isFclEnabled()
751
+ ? rootViewController.getRightmostView()
752
+ : (this.getAppComponent().getRootContainer() as any).getCurrentPage();
753
+ if (!currentPageView.isA("sap.m.MessagePage")) {
743
754
  const oMessageButton = this.getView().byId("fe::FooterBar::MessageButton") as any,
744
755
  oMessagePopover = oMessageButton.oMessagePopover,
745
756
  oItemBinding = oMessagePopover.getBinding("items");
@@ -763,7 +774,7 @@ class ObjectPageController extends PageController {
763
774
  });
764
775
  }
765
776
 
766
- _saveDocument(oContext: any) {
777
+ async _saveDocument(oContext: any) {
767
778
  const oModel = this.getView().getModel("ui"),
768
779
  aWaitCreateDocuments: any[] = [];
769
780
  // indicates if we are creating a new row in the OP
@@ -792,31 +803,33 @@ class ObjectPageController extends PageController {
792
803
  );
793
804
  }
794
805
  });
795
- return Promise.all(aWaitCreateDocuments)
796
- .then((aBindings: any[]) => {
797
- const mParameters = {
798
- bExecuteSideEffectsOnError: bExecuteSideEffectsOnError,
799
- bindings: aBindings
800
- };
801
- // We need to either reject or resolve a promise here and return it since this save
802
- // function is not only called when pressing the save button in the footer, but also
803
- // when the user selects create or save in a dataloss popup.
804
- // The logic of the dataloss popup needs to detect if the save had errors or not in order
805
- // to decide if the subsequent action - like a back navigation - has to be executed or not.
806
- return this.editFlow.saveDocument(oContext, mParameters).catch((...args) => {
807
- // If the saveDocument in editFlow returns errors we need
808
- // to show the message popover here and ensure that the
809
- // dataloss logic does not perform the follow up function
810
- // like e.g. a back navigation hence we return a promise and reject it
811
- this._showMessagePopover(...args);
812
- return Promise.reject(...args);
813
- });
814
- })
815
- .finally(function () {
816
- if (BusyLocker.isLocked(oModel)) {
817
- BusyLocker.unlock(oModel);
818
- }
819
- });
806
+
807
+ try {
808
+ const aBindings = await Promise.all(aWaitCreateDocuments);
809
+ const mParameters = {
810
+ bExecuteSideEffectsOnError: bExecuteSideEffectsOnError,
811
+ bindings: aBindings
812
+ };
813
+ // We need to either reject or resolve a promise here and return it since this save
814
+ // function is not only called when pressing the save button in the footer, but also
815
+ // when the user selects create or save in a dataloss popup.
816
+ // The logic of the dataloss popup needs to detect if the save had errors or not in order
817
+ // to decide if the subsequent action - like a back navigation - has to be executed or not.
818
+ try {
819
+ await this.editFlow.saveDocument(oContext, mParameters);
820
+ } catch (error: any) {
821
+ // If the saveDocument in editFlow returns errors we need
822
+ // to show the message popover here and ensure that the
823
+ // dataloss logic does not perform the follow up function
824
+ // like e.g. a back navigation hence we return a promise and reject it
825
+ this._showMessagePopover(error);
826
+ throw error;
827
+ }
828
+ } finally {
829
+ if (BusyLocker.isLocked(oModel)) {
830
+ BusyLocker.unlock(oModel);
831
+ }
832
+ }
820
833
  }
821
834
 
822
835
  _manageCollaboration() {
@@ -836,9 +849,6 @@ class ObjectPageController extends PageController {
836
849
  return this.editFlow.applyDocument(oContext).catch(() => this._showMessagePopover());
837
850
  }
838
851
 
839
- _showSwitchDraftAndActivePopover = DraftHandler.showSwitchDraftAndActivePopover;
840
- _switchDraftAndActivePopoverListSelect = DraftHandler.switchDraftAndActivePopoverListSelect;
841
-
842
852
  _updateRelatedApps() {
843
853
  const oObjectPage = this._getObjectPageLayoutControl();
844
854
  if (CommonUtils.resolveStringtoBoolean(oObjectPage.data("showRelatedApps"))) {
@@ -856,7 +866,7 @@ class ObjectPageController extends PageController {
856
866
  oElement = oElement[0];
857
867
  }
858
868
  }
859
- if (oElement && oElement.isA && oElement.isA("sap.fe.macros.TableAPI")) {
869
+ if (oElement && oElement.isA && oElement.isA("sap.fe.macros.table.TableAPI")) {
860
870
  oElement = oElement.getContent instanceof Function && oElement.getContent();
861
871
  if (oElement && oElement.length > 0) {
862
872
  oElement = oElement[0];
@@ -1053,32 +1063,32 @@ class ObjectPageController extends PageController {
1053
1063
  * @ui5-restricted
1054
1064
  * @experimental
1055
1065
  */
1056
- async _setBreadcrumbLinks(oSource: any) {
1066
+ async _setBreadcrumbLinks(oSource: BreadCrumbs) {
1057
1067
  const oContext = oSource.getBindingContext(),
1058
1068
  oAppComponent = this.getAppComponent(),
1059
1069
  aPromises: Promise<void>[] = [],
1060
1070
  aSkipParameterized: any[] = [],
1061
- sNewPath = oContext && oContext.getPath(),
1062
- aPathParts = sNewPath && sNewPath.split("/"),
1071
+ sNewPath = oContext?.getPath(),
1072
+ aPathParts = sNewPath?.split("/") ?? [],
1063
1073
  oMetaModel = oAppComponent && oAppComponent.getMetaModel();
1064
1074
  let sPath = "";
1065
- aPathParts.shift();
1066
- aPathParts.splice(-1, 1);
1067
- aPathParts.forEach(function (sPathPart: any) {
1068
- sPath += `/${sPathPart}`;
1069
- const oRootViewController = oAppComponent.getRootViewController() as RootContainerBaseController;
1070
- const sParameterPath = oMetaModel.getMetaPath(sPath);
1071
- const bResultContext = oMetaModel.getObject(`${sParameterPath}/@com.sap.vocabularies.Common.v1.ResultContext`);
1072
- if (bResultContext) {
1073
- // We dont need to create a breadcrumb for Parameter path
1074
- aSkipParameterized.push(1);
1075
- return;
1076
- } else {
1077
- aSkipParameterized.push(0);
1078
- }
1079
- aPromises.push(oRootViewController.getTitleInfoFromPath(sPath));
1080
- });
1081
1075
  try {
1076
+ aPathParts.shift();
1077
+ aPathParts.splice(-1, 1);
1078
+ aPathParts.forEach(function (sPathPart: any) {
1079
+ sPath += `/${sPathPart}`;
1080
+ const oRootViewController = oAppComponent.getRootViewController() as RootContainerBaseController;
1081
+ const sParameterPath = oMetaModel.getMetaPath(sPath);
1082
+ const bResultContext = oMetaModel.getObject(`${sParameterPath}/@com.sap.vocabularies.Common.v1.ResultContext`);
1083
+ if (bResultContext) {
1084
+ // We dont need to create a breadcrumb for Parameter path
1085
+ aSkipParameterized.push(1);
1086
+ return;
1087
+ } else {
1088
+ aSkipParameterized.push(0);
1089
+ }
1090
+ aPromises.push(oRootViewController.getTitleInfoFromPath(sPath));
1091
+ });
1082
1092
  const titleHierarchyInfos: any[] = await Promise.all(aPromises);
1083
1093
  let idx, hierarchyPosition, oLink;
1084
1094
  for (const titleHierarchyInfo of titleHierarchyInfos) {