@sapui5/sap.fe.templates 1.102.2 → 1.104.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 (123) hide show
  1. package/package.json +3 -4
  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 +18 -18
  6. package/src/sap/fe/templates/Feedback.ts +12 -12
  7. package/src/sap/fe/templates/ListReport/ExtensionAPI.js +9 -12
  8. package/src/sap/fe/templates/ListReport/ExtensionAPI.ts +9 -12
  9. package/src/sap/fe/templates/ListReport/ListReport.view.xml +4 -3
  10. package/src/sap/fe/templates/ListReport/ListReportController.controller.js +102 -313
  11. package/src/sap/fe/templates/ListReport/ListReportController.controller.ts +109 -297
  12. package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.js +367 -0
  13. package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.ts +259 -0
  14. package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.js +16 -9
  15. package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.ts +17 -11
  16. package/src/sap/fe/templates/ListReport/overrides/Share.js +3 -4
  17. package/src/sap/fe/templates/ListReport/overrides/Share.ts +6 -7
  18. package/src/sap/fe/templates/ListReport/overrides/ViewState.js +22 -31
  19. package/src/sap/fe/templates/ListReport/overrides/ViewState.ts +33 -37
  20. package/src/sap/fe/templates/ListReport/view/fragments/CollectionVisualization.fragment.xml +1 -1
  21. package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.js +19 -3
  22. package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.ts +75 -47
  23. package/src/sap/fe/templates/ObjectPage/ExtensionAPI.js +12 -16
  24. package/src/sap/fe/templates/ObjectPage/ExtensionAPI.ts +17 -20
  25. package/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +5 -4
  26. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +270 -244
  27. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.ts +175 -235
  28. package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.js +62 -73
  29. package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.ts +75 -90
  30. package/src/sap/fe/templates/ObjectPage/components/DraftHandlerButton.tsx +132 -0
  31. package/src/sap/fe/templates/ObjectPage/controls/SubSectionBlock.js +2 -3
  32. package/src/sap/fe/templates/ObjectPage/controls/SubSectionBlock.ts +4 -4
  33. package/src/sap/fe/templates/ObjectPage/designtime/StashableHBox.designtime.js +1 -1
  34. package/src/sap/fe/templates/ObjectPage/designtime/StashableHBox.designtime.ts +1 -1
  35. package/src/sap/fe/templates/ObjectPage/designtime/StashableVBox.designtime.js +1 -1
  36. package/src/sap/fe/templates/ObjectPage/designtime/StashableVBox.designtime.ts +1 -1
  37. package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.js +1 -1
  38. package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.ts +6 -6
  39. package/src/sap/fe/templates/ObjectPage/overrides/InternalRouting.js +1 -1
  40. package/src/sap/fe/templates/ObjectPage/overrides/InternalRouting.ts +2 -2
  41. package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.js +1 -1
  42. package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.ts +2 -2
  43. package/src/sap/fe/templates/ObjectPage/overrides/Paginator.js +1 -1
  44. package/src/sap/fe/templates/ObjectPage/overrides/Paginator.ts +1 -1
  45. package/src/sap/fe/templates/ObjectPage/overrides/Share.js +67 -41
  46. package/src/sap/fe/templates/ObjectPage/overrides/Share.ts +44 -56
  47. package/src/sap/fe/templates/ObjectPage/overrides/ViewState.js +2 -2
  48. package/src/sap/fe/templates/ObjectPage/overrides/ViewState.ts +4 -4
  49. package/src/sap/fe/templates/ObjectPage/view/fragments/Actions.fragment.xml +3 -10
  50. package/src/sap/fe/templates/ObjectPage/view/fragments/EditableHeaderFacet.fragment.xml +15 -5
  51. package/src/sap/fe/templates/ObjectPage/view/fragments/FooterContent.fragment.xml +1 -1
  52. package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderFacet.fragment.xml +1 -14
  53. package/src/sap/fe/templates/ObjectPage/view/fragments/HeadingTitle.fragment.xml +1 -0
  54. package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderAddress.fragment.xml +7 -2
  55. package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderContact.fragment.xml +26 -0
  56. package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderForm.fragment.xml +1 -1
  57. package/src/sap/fe/templates/ObjectPage/view/fragments/Section.fragment.xml +4 -1
  58. package/src/sap/fe/templates/ObjectPage/view/fragments/SectionContent.fragment.xml +6 -2
  59. package/src/sap/fe/templates/ObjectPage/view/fragments/SectionFormContent.fragment.xml +1 -0
  60. package/src/sap/fe/templates/ObjectPage/view/fragments/SectionMoreFormContent.fragment.xml +1 -0
  61. package/src/sap/fe/templates/RootContainer/controller/Fcl.controller.js +25 -28
  62. package/src/sap/fe/templates/RootContainer/controller/Fcl.controller.ts +30 -33
  63. package/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.js +3 -4
  64. package/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.ts +4 -5
  65. package/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.js +140 -52
  66. package/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.ts +108 -54
  67. package/src/sap/fe/templates/RootContainer/overrides/EditFlow.js +1 -1
  68. package/src/sap/fe/templates/RootContainer/overrides/EditFlow.ts +3 -3
  69. package/src/sap/fe/templates/TableScroller.js +3 -3
  70. package/src/sap/fe/templates/TableScroller.ts +2 -2
  71. package/src/sap/fe/templates/controls/Table.fragment.xml +1 -0
  72. package/src/sap/fe/templates/library.js +7 -3
  73. package/src/sap/fe/templates/library.ts +5 -0
  74. package/src/sap/fe/templates/messagebundle.properties +7 -22
  75. package/src/sap/fe/templates/messagebundle_ar.properties +3 -12
  76. package/src/sap/fe/templates/messagebundle_bg.properties +0 -9
  77. package/src/sap/fe/templates/messagebundle_ca.properties +2 -11
  78. package/src/sap/fe/templates/messagebundle_cs.properties +3 -12
  79. package/src/sap/fe/templates/messagebundle_cy.properties +0 -9
  80. package/src/sap/fe/templates/messagebundle_da.properties +3 -12
  81. package/src/sap/fe/templates/messagebundle_de.properties +2 -11
  82. package/src/sap/fe/templates/messagebundle_el.properties +2 -11
  83. package/src/sap/fe/templates/messagebundle_en.properties +2 -11
  84. package/src/sap/fe/templates/messagebundle_en_GB.properties +2 -11
  85. package/src/sap/fe/templates/messagebundle_en_US_sappsd.properties +2 -11
  86. package/src/sap/fe/templates/messagebundle_en_US_saprigi.properties +2 -11
  87. package/src/sap/fe/templates/messagebundle_en_US_saptrc.properties +1 -5
  88. package/src/sap/fe/templates/messagebundle_es.properties +0 -9
  89. package/src/sap/fe/templates/messagebundle_es_MX.properties +2 -11
  90. package/src/sap/fe/templates/messagebundle_et.properties +0 -9
  91. package/src/sap/fe/templates/messagebundle_fi.properties +2 -11
  92. package/src/sap/fe/templates/messagebundle_fr.properties +3 -12
  93. package/src/sap/fe/templates/messagebundle_fr_CA.properties +2 -11
  94. package/src/sap/fe/templates/messagebundle_hi.properties +2 -11
  95. package/src/sap/fe/templates/messagebundle_hr.properties +2 -11
  96. package/src/sap/fe/templates/messagebundle_hu.properties +2 -11
  97. package/src/sap/fe/templates/messagebundle_id.properties +2 -11
  98. package/src/sap/fe/templates/messagebundle_it.properties +2 -11
  99. package/src/sap/fe/templates/messagebundle_iw.properties +2 -11
  100. package/src/sap/fe/templates/messagebundle_ja.properties +2 -11
  101. package/src/sap/fe/templates/messagebundle_kk.properties +2 -11
  102. package/src/sap/fe/templates/messagebundle_ko.properties +2 -11
  103. package/src/sap/fe/templates/messagebundle_lt.properties +2 -11
  104. package/src/sap/fe/templates/messagebundle_lv.properties +0 -9
  105. package/src/sap/fe/templates/messagebundle_ms.properties +2 -11
  106. package/src/sap/fe/templates/messagebundle_nl.properties +2 -11
  107. package/src/sap/fe/templates/messagebundle_no.properties +0 -9
  108. package/src/sap/fe/templates/messagebundle_pl.properties +0 -9
  109. package/src/sap/fe/templates/messagebundle_pt.properties +3 -12
  110. package/src/sap/fe/templates/messagebundle_pt_PT.properties +2 -11
  111. package/src/sap/fe/templates/messagebundle_ro.properties +0 -9
  112. package/src/sap/fe/templates/messagebundle_ru.properties +2 -11
  113. package/src/sap/fe/templates/messagebundle_sh.properties +2 -11
  114. package/src/sap/fe/templates/messagebundle_sk.properties +2 -11
  115. package/src/sap/fe/templates/messagebundle_sl.properties +2 -11
  116. package/src/sap/fe/templates/messagebundle_sv.properties +2 -11
  117. package/src/sap/fe/templates/messagebundle_th.properties +1 -10
  118. package/src/sap/fe/templates/messagebundle_tr.properties +2 -11
  119. package/src/sap/fe/templates/messagebundle_uk.properties +2 -11
  120. package/src/sap/fe/templates/messagebundle_vi.properties +0 -9
  121. package/src/sap/fe/templates/messagebundle_zh_CN.properties +0 -9
  122. package/src/sap/fe/templates/messagebundle_zh_TW.properties +2 -11
  123. package/src/sap/fe/templates/ObjectPage/view/fragments/SwitchDraftAndActiveObjectPopOver.fragment.xml +0 -27
@@ -1,20 +1,21 @@
1
1
  import Log from "sap/base/Log";
2
2
  import CommonUtils from "sap/fe/core/CommonUtils";
3
- import ViewState from "sap/fe/core/controllerextensions/ViewState";
3
+ import type ViewState from "sap/fe/core/controllerextensions/ViewState";
4
4
  import KeepAliveHelper from "sap/fe/core/helpers/KeepAliveHelper";
5
- import ModelHelper, { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
5
+ import type { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
6
+ import ModelHelper from "sap/fe/core/helpers/ModelHelper";
6
7
  import CoreLibrary from "sap/fe/core/library";
7
8
  import * as PropertyFormatters from "sap/fe/core/templating/PropertyFormatters";
8
9
  import DelegateUtil from "sap/fe/macros/DelegateUtil";
9
10
  import FilterUtils from "sap/fe/macros/filter/FilterUtils";
10
11
  import NavLibrary from "sap/fe/navigation/library";
11
- import ListReportController from "sap/fe/templates/ListReport/ListReportController.controller";
12
+ import type ListReportController from "sap/fe/templates/ListReport/ListReportController.controller";
12
13
  import { system } from "sap/ui/Device";
13
14
  import ControlVariantApplyAPI from "sap/ui/fl/apply/api/ControlVariantApplyAPI";
14
- import VariantManagement from "sap/ui/fl/variants/VariantManagement";
15
+ import type VariantManagement from "sap/ui/fl/variants/VariantManagement";
15
16
  import ConditionValidated from "sap/ui/mdc/enum/ConditionValidated";
16
17
  import StateUtil from "sap/ui/mdc/p13n/StateUtil";
17
- import JSONModel from "sap/ui/model/json/JSONModel";
18
+ import type JSONModel from "sap/ui/model/json/JSONModel";
18
19
 
19
20
  const NavType = NavLibrary.NavType,
20
21
  VariantManagementType = CoreLibrary.VariantManagement,
@@ -49,15 +50,10 @@ const ViewStateOverride: any = {
49
50
  if (oFilterBar) {
50
51
  oFilterBar.setSuspendSelection(false);
51
52
  } else if (oController._isFilterBarHidden()) {
52
- const oInternalModelContext = oController.getView().getBindingContext("internal") as InternalModelContext,
53
- aControls = oController._getControls();
53
+ const oInternalModelContext = oController.getView().getBindingContext("internal") as InternalModelContext;
54
54
  oInternalModelContext.setProperty("hasPendingFilters", false);
55
55
  if (oController._isMultiMode()) {
56
- oController._setCountsOutDated();
57
- const sDisplayedControlId = oController._getCurrentControl().getId();
58
- aControls.forEach(function (oControl: any) {
59
- oControl.data("outdatedRows", oControl.getId() !== sDisplayedControlId);
60
- });
56
+ oController._getMultiModeControl().setCountsOutDated(true);
61
57
  }
62
58
  }
63
59
  },
@@ -72,7 +68,7 @@ const ViewStateOverride: any = {
72
68
  adaptStateControls: function (this: ViewState & typeof ViewStateOverride, aStateControls: any) {
73
69
  const oView = this.getView(),
74
70
  oController = oView.getController() as ListReportController,
75
- oViewData = oView.getViewData() as any,
71
+ oViewData = oView.getViewData(),
76
72
  bControlVM = oViewData.variantManagement === VariantManagementType.Control;
77
73
 
78
74
  const oFilterBarVM = this._getFilterBarVM(oView);
@@ -142,7 +138,7 @@ const ViewStateOverride: any = {
142
138
  oAdditionalStates.alpContentView = TemplateContentView.Chart;
143
139
  }
144
140
  (oInternalModelContext.getModel() as JSONModel).setProperty(
145
- oInternalModelContext.getPath() + "/alpContentView",
141
+ `${oInternalModelContext.getPath()}/alpContentView`,
146
142
  oAdditionalStates.alpContentView
147
143
  );
148
144
  }
@@ -164,27 +160,28 @@ const ViewStateOverride: any = {
164
160
  bFilterVariantApplied = true;
165
161
  }
166
162
  }
167
- return this._applySelectionVariant(oView, oNavigationParameter, bFilterVariantApplied).then(() => {
168
- const oDynamicPage = oView.byId("fe::ListReport");
169
- let bPreventInitialSearch = false;
170
- const oFilterBarVM = this._getFilterBarVM(oView);
171
- const oFilterBarControl = oController._getFilterBarControl();
172
- if (oFilterBarControl) {
173
- if (
174
- (oNavigationParameter.navigationType !== NavType.initial && oNavigationParameter.requiresStandardVariant) ||
175
- (!oFilterBarVM && oView.getViewData().initialLoad === InitialLoadMode.Enabled) ||
176
- oController._shouldAutoTriggerSearch(oFilterBarVM)
177
- ) {
178
- oFilterBarControl.triggerSearch();
179
- } else {
180
- bPreventInitialSearch = this._preventInitialSearch(oFilterBarVM);
181
- }
182
- // reset the suspend selection on filter bar to allow loading of data when needed (was set on LR Init)
183
- oFilterBarControl.setSuspendSelection(false);
184
- this._bSearchTriggered = !bPreventInitialSearch;
185
- oDynamicPage.setHeaderExpanded(system.desktop || bPreventInitialSearch);
163
+ return this._applySelectionVariant(oView, oNavigationParameter, bFilterVariantApplied);
164
+ })
165
+ .then(() => {
166
+ const oDynamicPage = oView.byId("fe::ListReport");
167
+ let bPreventInitialSearch = false;
168
+ const oFilterBarVM = this._getFilterBarVM(oView);
169
+ const oFilterBarControl = oController._getFilterBarControl();
170
+ if (oFilterBarControl) {
171
+ if (
172
+ (oNavigationParameter.navigationType !== NavType.initial && oNavigationParameter.requiresStandardVariant) ||
173
+ (!oFilterBarVM && oView.getViewData().initialLoad === InitialLoadMode.Enabled) ||
174
+ oController._shouldAutoTriggerSearch(oFilterBarVM)
175
+ ) {
176
+ oFilterBarControl.triggerSearch();
177
+ } else {
178
+ bPreventInitialSearch = this._preventInitialSearch(oFilterBarVM);
186
179
  }
187
- });
180
+ // reset the suspend selection on filter bar to allow loading of data when needed (was set on LR Init)
181
+ oFilterBarControl.setSuspendSelection(false);
182
+ this._bSearchTriggered = !bPreventInitialSearch;
183
+ oDynamicPage.setHeaderExpanded(system.desktop || bPreventInitialSearch);
184
+ }
188
185
  })
189
186
  .catch(function () {
190
187
  Log.error("Variant ID cannot be applied");
@@ -270,7 +267,7 @@ const ViewStateOverride: any = {
270
267
  case VariantManagementType.None:
271
268
  return null;
272
269
  default:
273
- throw new Error("unhandled variant setting: " + oViewData.variantManagement);
270
+ throw new Error(`unhandled variant setting: ${oViewData.variantManagement}`);
274
271
  }
275
272
  },
276
273
 
@@ -295,7 +292,7 @@ const ViewStateOverride: any = {
295
292
  let oConditions = {};
296
293
  const oMetaModel = oView.getModel().getMetaModel();
297
294
  const oViewData = oView.getViewData();
298
- const sContextPath = oViewData.contextPath || "/" + oViewData.entitySet;
295
+ const sContextPath = oViewData.contextPath || `/${oViewData.entitySet}`;
299
296
  const aMandatoryFilterFields = CommonUtils.getMandatoryFilterFields(oMetaModel, sContextPath);
300
297
  let oVariant;
301
298
  const bRequiresStandardVariant = oNavigationParameter.requiresStandardVariant;
@@ -382,7 +379,6 @@ const ViewStateOverride: any = {
382
379
  ? false
383
380
  : PropertyFormatters.hasValueHelp(oPropertyContext.getObject(), { context: oPropertyContext })
384
381
  });
385
- return;
386
382
  }
387
383
  });
388
384
  return aPropertyInfo;
@@ -11,7 +11,7 @@
11
11
  <template:with path="view>primaryVisualization" var="presentationContext">
12
12
  <template:repeat list="{presentationContext>visualizations}" var="visualizationDefinition">
13
13
  <m:MessageStrip
14
- text="{= '{parts:[{path:\'internal>controls/ignoredFields' + (${visualizationDefinition>collection}) + (${visualizationDefinition>type}) + '\'},{value: \'\'}, {value: \'' + (${visualizationDefinition>type} === 'Chart') + '\'}, {value: ' + (${visualizationDefinition>type} === 'Chart' ? JSON.stringify(${visualizationDefinition>applySupported}) : '\'\'') + '}], formatter: \'.formatters.setTabMessageStrip\'}'}"
14
+ text="{= '{parts:[{path:\'internal>controls/ignoredFields' + (${visualizationDefinition>collection}) + (${visualizationDefinition>type}) + '\'}, {value: \'' + (${visualizationDefinition>type} === 'Chart') + '\'},{value: ' + (${visualizationDefinition>type} === 'Chart' ? JSON.stringify(${visualizationDefinition>applySupported}) : '\'\'') + '}], formatter: \'.formatters.setALPControlMessageStrip\'}'}"
15
15
  type="Information"
16
16
  showIcon="true"
17
17
  showCloseButton="true"
@@ -53,9 +53,25 @@ sap.ui.define(["sap/fe/core/buildingBlocks/BuildingBlock", "sap/fe/core/building
53
53
  _exports = MultipleMode;
54
54
  var _proto = MultipleMode.prototype;
55
55
 
56
+ _proto.getInnerControlsAPI = function getInnerControlsAPI() {
57
+ var _this$converterContex;
58
+
59
+ return ((_this$converterContex = this.converterContext) === null || _this$converterContex === void 0 ? void 0 : _this$converterContex.views.reduce(function (innerControls, view) {
60
+ var innerControlId = view.tableControlId || view.chartControlId;
61
+
62
+ if (innerControlId) {
63
+ innerControls.push("".concat(innerControlId, "::").concat(view.tableControlId ? "Table" : "Chart"));
64
+ }
65
+
66
+ return innerControls;
67
+ }, []).join(",")) || "";
68
+ };
69
+
56
70
  _proto.getTemplate = function getTemplate() {
57
- return xml(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n\t\t\t<IconTabBar\n\t\t\t\txmlns=\"sap.m\"\n\n\t\t\t\txmlns:customData=\"http://schemas.sap.com/sapui5/extension/sap.ui.core.CustomData/1\"\n\t\t\t\texpandable=\"false\"\n\t\t\t\theaderMode=\"Inline\"\n\t\t\t\tid=\"", "\"\n\t\t\t\tselect=\".handlers.onTabMultiModeChange\"\n\t\t\t\tstretchContentHeight=\"true\"\n\t\t\t\tcustomData:showCounts=\"", "\"\n\t\t\t>\n\t\t\t\t<items>\n\t\t\t\t", "\n\t\t\t\t</items>\n\t\t\t</IconTabBar>"])), this.converterContext.iconTabBarId, this.converterContext.showTabCounts, this.converterContext.views.map(function (view, viewIdx) {
58
- return "<template:with path=\"converterContext>views/".concat(viewIdx, "/\" var=\"view\"\n\t\t\t\t\t\t\t\t\txmlns:core=\"sap.ui.core\"\n\t\t\t\t\t\t\t\t\txmlns:template=\"http://schemas.sap.com/sapui5/extension/sap.ui.core.template/1\">\n\t\t\t\t\t\t\t<template:with path=\"view>presentation\" var=\"presentationContext\">\n\t\t\t\t\t\t\t<IconTabFilter\n\t\t\t\t\t\t\t\ttext=\"").concat(view.title, "\"\n\t\t\t\t\t\t\t\tkey=\"{= ${view>tableControlId} || ${view>customTabId} || ${view>chartControlId}}\"\n\t\t\t\t\t\t\t\tcustomData:selectionVariant=\"{view>selectionVariantPath}\"\n\t\t\t\t\t\t\t\tvisible=\"{view>visible}\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<content>\n\t\t\t\t\t\t\t\t\t<template:if test=\"{= ${view>type} === 'Custom'}\">\n\t\t\t\t\t\t\t\t\t\t<template:then>\n\t\t\t\t\t\t\t\t\t\t\t<core:Fragment fragmentName=\"sap.fe.templates.ListReport.view.fragments.CustomView\" type=\"XML\" />\n\t\t\t\t\t\t\t\t\t\t</template:then>\n\t\t\t\t\t\t\t\t\t\t<template:else>\n\t\t\t\t\t\t\t\t\t\t\t<MessageStrip\n\t\t\t\t\t\t\t\t\t\t text=\"{= '{= (${internal>tabs/ignoredFieldsTitle/' + (${view>tableControlId} || ${view>chartControlId}) + '} ) }' }\"\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"Information\"\n\t\t\t\t\t\t\t\t\t\t\t\tshowIcon=\"true\"\n\t\t\t\t\t\t\t\t\t\t\t\tshowCloseButton=\"true\"\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"sapUiSmallMargin\"\n\t\t\t\t\t\t\t\t\t\t\t\tvisible=\"{= '{= (${internal>tabs/ignoredFields/' +(${view>tableControlId} || ${view>chartControlId}) + '} || []).length>0 }' }\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t</MessageStrip>\n\t\t\t\t\t\t\t\t\t\t\t<core:Fragment fragmentName=\"sap.fe.templates.ListReport.view.fragments.CollectionVisualization\" type=\"XML\" />\n\t\t\t\t\t\t\t\t\t\t</template:else>\n\t\t\t\t\t\t\t\t\t</template:if>\n\t\t\t\t\t\t\t\t</content>\n\t\t\t\t\t\t\t</IconTabFilter>\n\t\t\t\t\t\t</template:with></template:with>");
71
+ var _this$converterContex2, _this$converterContex3, _this$converterContex4;
72
+
73
+ return xml(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n\t\t\t<fe:MultipleModeControl\n\t\t\t\txmlns=\"sap.m\"\n\t\t\t\txmlns:fe=\"sap.fe.templates.ListReport.controls\"\n\t\t\t\txmlns:core=\"sap.ui.core\"\n\t\t\t\txmlns:macro=\"sap.fe.macros\"\n\t\t\t\tselect=\".handlers.onTabMultiModeChange\"\n\t\t\t\tinnerControls= \"", "\"\n\t\t\t\tshowCounts=\"", "\"\n\t\t\t\tfreezeContent=\"true\"\n\t\t\t\tid=\"", "::Control\"\n\t\t\t>\n\t\t\t\t<IconTabBar\n\t\t\t\t\texpandable=\"false\"\n\t\t\t\t\theaderMode=\"Inline\"\n\t\t\t\t\tid=\"", "\"\n\t\t\t\t\tstretchContentHeight=\"true\"\n\t\t\t\t>\n\t\t\t\t\t<items>\n\t\t\t\t\t", "\n\t\t\t\t\t</items>\n\t\t\t\t</IconTabBar>\n\t\t\t</fe:MultipleModeControl>"])), this.getInnerControlsAPI(), (_this$converterContex2 = this.converterContext.multiViewsControl) === null || _this$converterContex2 === void 0 ? void 0 : _this$converterContex2.showTabCounts, (_this$converterContex3 = this.converterContext.multiViewsControl) === null || _this$converterContex3 === void 0 ? void 0 : _this$converterContex3.id, (_this$converterContex4 = this.converterContext.multiViewsControl) === null || _this$converterContex4 === void 0 ? void 0 : _this$converterContex4.id, this.converterContext.views.map(function (view, viewIdx) {
74
+ return "<template:with path=\"converterContext>views/".concat(viewIdx, "/\" var=\"view\"\n\t\t\t\t\t\t\t\t\t\ttemplate:require=\"{\n\t\t\t\t\t\t\t\t\t\t\tID: 'sap/fe/core/helpers/StableIdHelper'\n\t\t\t\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\t\t\t\txmlns:core=\"sap.ui.core\"\n\t\t\t\t\t\t\t\t\t\txmlns:template=\"http://schemas.sap.com/sapui5/extension/sap.ui.core.template/1\">\n\t\t\t\t\t\t\t\t<template:with path=\"view>presentation\" var=\"presentationContext\">\n\t\t\t\t\t\t\t\t<IconTabFilter\n\t\t\t\t\t\t\t\t\ttext=\"").concat(view.title, "\"\n\t\t\t\t\t\t\t\t\tkey=\"{= ID.generate([${view>tableControlId} || ${view>customTabId} || ${view>chartControlId}])}\"\n\t\t\t\t\t\t\t\t\tvisible=\"{view>visible}\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<content>\n\t\t\t\t\t\t\t\t\t\t<template:if test=\"{= ${view>type} === 'Custom'}\">\n\t\t\t\t\t\t\t\t\t\t\t<template:then>\n\t\t\t\t\t\t\t\t\t\t\t\t<core:Fragment fragmentName=\"sap.fe.templates.ListReport.view.fragments.CustomView\" type=\"XML\" />\n\t\t\t\t\t\t\t\t\t\t\t</template:then>\n\t\t\t\t\t\t\t\t\t\t\t<template:else>\n\t\t\t\t\t\t\t\t\t\t\t\t<MessageStrip\n\t\t\t\t\t\t\t\t\t\t\t\t\ttext=\"{= '{= (${tabsInternal>/' + (${view>tableControlId} || ${view>chartControlId}) + '/notApplicable/title} ) }' }\"\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"Information\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tshowIcon=\"true\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tshowCloseButton=\"true\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"sapUiSmallMargin\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tvisible=\"{= '{= (${tabsInternal>/' + (${view>tableControlId} || ${view>chartControlId}) + '/notApplicable/fields} || []).length>0 }' }\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t</MessageStrip>\n\t\t\t\t\t\t\t\t\t\t\t\t<core:Fragment fragmentName=\"sap.fe.templates.ListReport.view.fragments.CollectionVisualization\" type=\"XML\" />\n\t\t\t\t\t\t\t\t\t\t\t</template:else>\n\t\t\t\t\t\t\t\t\t\t</template:if>\n\t\t\t\t\t\t\t\t\t</content>\n\t\t\t\t\t\t\t\t</IconTabFilter>\n\t\t\t\t\t\t\t</template:with></template:with>");
59
75
  }).join(""));
60
76
  };
61
77
 
@@ -69,4 +85,4 @@ sap.ui.define(["sap/fe/core/buildingBlocks/BuildingBlock", "sap/fe/core/building
69
85
  _exports = MultipleMode;
70
86
  return _exports;
71
87
  }, false);
72
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk11bHRpcGxlTW9kZS5mcmFnbWVudC50cyJdLCJuYW1lcyI6WyJNdWx0aXBsZU1vZGUiLCJkZWZpbmVCdWlsZGluZ0Jsb2NrIiwibmFtZSIsIm5hbWVzcGFjZSIsImlzT3BlbiIsInhtbEF0dHJpYnV0ZSIsInR5cGUiLCJnZXRUZW1wbGF0ZSIsInhtbCIsImNvbnZlcnRlckNvbnRleHQiLCJpY29uVGFiQmFySWQiLCJzaG93VGFiQ291bnRzIiwidmlld3MiLCJtYXAiLCJ2aWV3Iiwidmlld0lkeCIsInRpdGxlIiwiam9pbiIsIkJ1aWxkaW5nQmxvY2tCYXNlIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQUdxQkEsWSxXQURwQkMsbUJBQW1CLENBQUM7QUFBRUMsSUFBQUEsSUFBSSxFQUFFLGNBQVI7QUFBd0JDLElBQUFBLFNBQVMsRUFBRSw0Q0FBbkM7QUFBaUZDLElBQUFBLE1BQU0sRUFBRTtBQUF6RixHQUFELEMsVUFFbEJDLFlBQVksQ0FBQztBQUFFQyxJQUFBQSxJQUFJLEVBQUU7QUFBUixHQUFELEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1dBR2JDLFcsR0FBQSx1QkFBYztBQUNiLGFBQU9DLEdBQVAsc2ZBT1EsS0FBS0MsZ0JBQUwsQ0FBc0JDLFlBUDlCLEVBVTJCLEtBQUtELGdCQUFMLENBQXNCRSxhQVZqRCxFQWFJLEtBQUtGLGdCQUFMLENBQXNCRyxLQUF0QixDQUNBQyxHQURBLENBQ0ksVUFBQ0MsSUFBRCxFQUFPQyxPQUFQLEVBQW1CO0FBQ3ZCLHNFQUFzREEsT0FBdEQsOFRBS1VELElBQUksQ0FBQ0UsS0FMZjtBQStCQSxPQWpDQSxFQWtDQUMsSUFsQ0EsQ0FrQ0ssRUFsQ0wsQ0FiSjtBQWtEQSxLOzs7SUF2RHdDQyxpQiIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnVpbGRpbmdCbG9ja0Jhc2UsIGRlZmluZUJ1aWxkaW5nQmxvY2ssIHhtbEF0dHJpYnV0ZSB9IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrXCI7XG5pbXBvcnQgeyB4bWwgfSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1J1bnRpbWVcIjtcbmltcG9ydCB7IExpc3RSZXBvcnREZWZpbml0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvdGVtcGxhdGVzL0xpc3RSZXBvcnRDb252ZXJ0ZXJcIjtcblxuQGRlZmluZUJ1aWxkaW5nQmxvY2soeyBuYW1lOiBcIk11bHRpcGxlTW9kZVwiLCBuYW1lc3BhY2U6IFwic2FwLmZlLnRlbXBsYXRlcy5MaXN0UmVwb3J0LnZpZXcuZnJhZ21lbnRzXCIsIGlzT3BlbjogdHJ1ZSB9KVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTXVsdGlwbGVNb2RlIGV4dGVuZHMgQnVpbGRpbmdCbG9ja0Jhc2Uge1xuXHRAeG1sQXR0cmlidXRlKHsgdHlwZTogXCJzYXAudWkubW9kZWwuQ29udGV4dFwiIH0pXG5cdGNvbnZlcnRlckNvbnRleHQhOiBMaXN0UmVwb3J0RGVmaW5pdGlvbjtcblxuXHRnZXRUZW1wbGF0ZSgpIHtcblx0XHRyZXR1cm4geG1sYFxuXHRcdFx0PEljb25UYWJCYXJcblx0XHRcdFx0eG1sbnM9XCJzYXAubVwiXG5cblx0XHRcdFx0eG1sbnM6Y3VzdG9tRGF0YT1cImh0dHA6Ly9zY2hlbWFzLnNhcC5jb20vc2FwdWk1L2V4dGVuc2lvbi9zYXAudWkuY29yZS5DdXN0b21EYXRhLzFcIlxuXHRcdFx0XHRleHBhbmRhYmxlPVwiZmFsc2VcIlxuXHRcdFx0XHRoZWFkZXJNb2RlPVwiSW5saW5lXCJcblx0XHRcdFx0aWQ9XCIke3RoaXMuY29udmVydGVyQ29udGV4dC5pY29uVGFiQmFySWR9XCJcblx0XHRcdFx0c2VsZWN0PVwiLmhhbmRsZXJzLm9uVGFiTXVsdGlNb2RlQ2hhbmdlXCJcblx0XHRcdFx0c3RyZXRjaENvbnRlbnRIZWlnaHQ9XCJ0cnVlXCJcblx0XHRcdFx0Y3VzdG9tRGF0YTpzaG93Q291bnRzPVwiJHt0aGlzLmNvbnZlcnRlckNvbnRleHQuc2hvd1RhYkNvdW50c31cIlxuXHRcdFx0PlxuXHRcdFx0XHQ8aXRlbXM+XG5cdFx0XHRcdCR7dGhpcy5jb252ZXJ0ZXJDb250ZXh0LnZpZXdzXG5cdFx0XHRcdFx0Lm1hcCgodmlldywgdmlld0lkeCkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGA8dGVtcGxhdGU6d2l0aCBwYXRoPVwiY29udmVydGVyQ29udGV4dD52aWV3cy8ke3ZpZXdJZHh9L1wiIHZhcj1cInZpZXdcIlxuXHRcdFx0XHRcdFx0XHRcdFx0eG1sbnM6Y29yZT1cInNhcC51aS5jb3JlXCJcblx0XHRcdFx0XHRcdFx0XHRcdHhtbG5zOnRlbXBsYXRlPVwiaHR0cDovL3NjaGVtYXMuc2FwLmNvbS9zYXB1aTUvZXh0ZW5zaW9uL3NhcC51aS5jb3JlLnRlbXBsYXRlLzFcIj5cblx0XHRcdFx0XHRcdFx0PHRlbXBsYXRlOndpdGggcGF0aD1cInZpZXc+cHJlc2VudGF0aW9uXCIgdmFyPVwicHJlc2VudGF0aW9uQ29udGV4dFwiPlxuXHRcdFx0XHRcdFx0XHQ8SWNvblRhYkZpbHRlclxuXHRcdFx0XHRcdFx0XHRcdHRleHQ9XCIke3ZpZXcudGl0bGV9XCJcblx0XHRcdFx0XHRcdFx0XHRrZXk9XCJ7PSBcXCR7dmlldz50YWJsZUNvbnRyb2xJZH0gfHwgXFwke3ZpZXc+Y3VzdG9tVGFiSWR9IHx8IFxcJHt2aWV3PmNoYXJ0Q29udHJvbElkfX1cIlxuXHRcdFx0XHRcdFx0XHRcdGN1c3RvbURhdGE6c2VsZWN0aW9uVmFyaWFudD1cInt2aWV3PnNlbGVjdGlvblZhcmlhbnRQYXRofVwiXG5cdFx0XHRcdFx0XHRcdFx0dmlzaWJsZT1cInt2aWV3PnZpc2libGV9XCJcblx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdDxjb250ZW50PlxuXHRcdFx0XHRcdFx0XHRcdFx0PHRlbXBsYXRlOmlmIHRlc3Q9XCJ7PSBcXCR7dmlldz50eXBlfSA9PT0gJ0N1c3RvbSd9XCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZW1wbGF0ZTp0aGVuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxjb3JlOkZyYWdtZW50IGZyYWdtZW50TmFtZT1cInNhcC5mZS50ZW1wbGF0ZXMuTGlzdFJlcG9ydC52aWV3LmZyYWdtZW50cy5DdXN0b21WaWV3XCIgdHlwZT1cIlhNTFwiIC8+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvdGVtcGxhdGU6dGhlbj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PHRlbXBsYXRlOmVsc2U+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PE1lc3NhZ2VTdHJpcFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICAgIHRleHQ9XCJ7PSAnez0gKFxcJHtpbnRlcm5hbD50YWJzL2lnbm9yZWRGaWVsZHNUaXRsZS8nICsgKFxcJHt2aWV3PnRhYmxlQ29udHJvbElkfSB8fCBcXCR7dmlldz5jaGFydENvbnRyb2xJZH0pICsgJ30gKSB9JyB9XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU9XCJJbmZvcm1hdGlvblwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzaG93SWNvbj1cInRydWVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c2hvd0Nsb3NlQnV0dG9uPVwidHJ1ZVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInNhcFVpU21hbGxNYXJnaW5cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmlzaWJsZT1cIns9ICd7PSAoXFwke2ludGVybmFsPnRhYnMvaWdub3JlZEZpZWxkcy8nICsoXFwke3ZpZXc+dGFibGVDb250cm9sSWR9IHx8IFxcJHt2aWV3PmNoYXJ0Q29udHJvbElkfSkgKyAnfSB8fCBbXSkubGVuZ3RoPjAgfScgfVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvTWVzc2FnZVN0cmlwPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxjb3JlOkZyYWdtZW50IGZyYWdtZW50TmFtZT1cInNhcC5mZS50ZW1wbGF0ZXMuTGlzdFJlcG9ydC52aWV3LmZyYWdtZW50cy5Db2xsZWN0aW9uVmlzdWFsaXphdGlvblwiIHR5cGU9XCJYTUxcIiAvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3RlbXBsYXRlOmVsc2U+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3RlbXBsYXRlOmlmPlxuXHRcdFx0XHRcdFx0XHRcdDwvY29udGVudD5cblx0XHRcdFx0XHRcdFx0PC9JY29uVGFiRmlsdGVyPlxuXHRcdFx0XHRcdFx0PC90ZW1wbGF0ZTp3aXRoPjwvdGVtcGxhdGU6d2l0aD5gO1xuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0LmpvaW4oXCJcIil9XG5cdFx0XHRcdDwvaXRlbXM+XG5cdFx0XHQ8L0ljb25UYWJCYXI+YDtcblx0fVxufVxuIl19
88
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk11bHRpcGxlTW9kZS5mcmFnbWVudC50cyJdLCJuYW1lcyI6WyJNdWx0aXBsZU1vZGUiLCJkZWZpbmVCdWlsZGluZ0Jsb2NrIiwibmFtZSIsIm5hbWVzcGFjZSIsImlzT3BlbiIsInhtbEF0dHJpYnV0ZSIsInR5cGUiLCJnZXRJbm5lckNvbnRyb2xzQVBJIiwiY29udmVydGVyQ29udGV4dCIsInZpZXdzIiwicmVkdWNlIiwiaW5uZXJDb250cm9scyIsInZpZXciLCJpbm5lckNvbnRyb2xJZCIsInRhYmxlQ29udHJvbElkIiwiY2hhcnRDb250cm9sSWQiLCJwdXNoIiwiam9pbiIsImdldFRlbXBsYXRlIiwieG1sIiwibXVsdGlWaWV3c0NvbnRyb2wiLCJzaG93VGFiQ291bnRzIiwiaWQiLCJtYXAiLCJ2aWV3SWR4IiwidGl0bGUiLCJCdWlsZGluZ0Jsb2NrQmFzZSJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFPcUJBLFksV0FEcEJDLG1CQUFtQixDQUFDO0FBQUVDLElBQUFBLElBQUksRUFBRSxjQUFSO0FBQXdCQyxJQUFBQSxTQUFTLEVBQUUsNENBQW5DO0FBQWlGQyxJQUFBQSxNQUFNLEVBQUU7QUFBekYsR0FBRCxDLFVBRWxCQyxZQUFZLENBQUM7QUFBRUMsSUFBQUEsSUFBSSxFQUFFO0FBQVIsR0FBRCxDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztXQUdiQyxtQixHQUFBLCtCQUFzQjtBQUFBOztBQUNyQixhQUNDLCtCQUFLQyxnQkFBTCxnRkFBdUJDLEtBQXZCLENBQ0VDLE1BREYsQ0FDUyxVQUFDQyxhQUFELEVBQTBCQyxJQUExQixFQUFtQztBQUMxQyxZQUFNQyxjQUFjLEdBQ2xCRCxJQUFELENBQW9DRSxjQUFwQyxJQUF1REYsSUFBRCxDQUFvQ0csY0FEM0Y7O0FBRUEsWUFBSUYsY0FBSixFQUFvQjtBQUNuQkYsVUFBQUEsYUFBYSxDQUFDSyxJQUFkLFdBQXNCSCxjQUF0QixlQUEwQ0QsSUFBRCxDQUFvQ0UsY0FBcEMsR0FBcUQsT0FBckQsR0FBK0QsT0FBeEc7QUFDQTs7QUFDRCxlQUFPSCxhQUFQO0FBQ0EsT0FSRixFQVFJLEVBUkosRUFTRU0sSUFURixDQVNPLEdBVFAsTUFTZSxFQVZoQjtBQVlBLEs7O1dBRURDLFcsR0FBQSx1QkFBYztBQUFBOztBQUNiLGFBQU9DLEdBQVAsNHNCQU9vQixLQUFLWixtQkFBTCxFQVBwQiw0QkFRZ0IsS0FBS0MsZ0JBQUwsQ0FBc0JZLGlCQVJ0QywyREFRZ0IsdUJBQXlDQyxhQVJ6RCw0QkFVUSxLQUFLYixnQkFBTCxDQUFzQlksaUJBVjlCLDJEQVVRLHVCQUF5Q0UsRUFWakQsNEJBZVMsS0FBS2QsZ0JBQUwsQ0FBc0JZLGlCQWYvQiwyREFlUyx1QkFBeUNFLEVBZmxELEVBbUJLLEtBQUtkLGdCQUFMLENBQXNCQyxLQUF0QixDQUNBYyxHQURBLENBQ0ksVUFBQ1gsSUFBRCxFQUFPWSxPQUFQLEVBQW1CO0FBQ3ZCLHNFQUFzREEsT0FBdEQsMmNBUVVaLElBQUksQ0FBQ2EsS0FSZjtBQWlDQSxPQW5DQSxFQW9DQVIsSUFwQ0EsQ0FvQ0ssRUFwQ0wsQ0FuQkw7QUEyREEsSzs7O0lBL0V3Q1MsaUIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1aWxkaW5nQmxvY2tCYXNlLCBkZWZpbmVCdWlsZGluZ0Jsb2NrLCB4bWxBdHRyaWJ1dGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0IHsgeG1sIH0gZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL0J1aWxkaW5nQmxvY2tSdW50aW1lXCI7XG5pbXBvcnQgdHlwZSB7XG5cdExpc3RSZXBvcnREZWZpbml0aW9uLFxuXHRTaW5nbGVDaGFydFZpZXdEZWZpbml0aW9uLFxuXHRTaW5nbGVUYWJsZVZpZXdEZWZpbml0aW9uXG59IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL3RlbXBsYXRlcy9MaXN0UmVwb3J0Q29udmVydGVyXCI7XG5cbkBkZWZpbmVCdWlsZGluZ0Jsb2NrKHsgbmFtZTogXCJNdWx0aXBsZU1vZGVcIiwgbmFtZXNwYWNlOiBcInNhcC5mZS50ZW1wbGF0ZXMuTGlzdFJlcG9ydC52aWV3LmZyYWdtZW50c1wiLCBpc09wZW46IHRydWUgfSlcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE11bHRpcGxlTW9kZSBleHRlbmRzIEJ1aWxkaW5nQmxvY2tCYXNlIHtcblx0QHhtbEF0dHJpYnV0ZSh7IHR5cGU6IFwic2FwLnVpLm1vZGVsLkNvbnRleHRcIiB9KVxuXHRjb252ZXJ0ZXJDb250ZXh0ITogTGlzdFJlcG9ydERlZmluaXRpb247XG5cblx0Z2V0SW5uZXJDb250cm9sc0FQSSgpIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0dGhpcy5jb252ZXJ0ZXJDb250ZXh0Py52aWV3c1xuXHRcdFx0XHQucmVkdWNlKChpbm5lckNvbnRyb2xzOiBzdHJpbmdbXSwgdmlldykgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IGlubmVyQ29udHJvbElkID1cblx0XHRcdFx0XHRcdCh2aWV3IGFzIFNpbmdsZVRhYmxlVmlld0RlZmluaXRpb24pLnRhYmxlQ29udHJvbElkIHx8ICh2aWV3IGFzIFNpbmdsZUNoYXJ0Vmlld0RlZmluaXRpb24pLmNoYXJ0Q29udHJvbElkO1xuXHRcdFx0XHRcdGlmIChpbm5lckNvbnRyb2xJZCkge1xuXHRcdFx0XHRcdFx0aW5uZXJDb250cm9scy5wdXNoKGAke2lubmVyQ29udHJvbElkfTo6JHsodmlldyBhcyBTaW5nbGVUYWJsZVZpZXdEZWZpbml0aW9uKS50YWJsZUNvbnRyb2xJZCA/IFwiVGFibGVcIiA6IFwiQ2hhcnRcIn1gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIGlubmVyQ29udHJvbHM7XG5cdFx0XHRcdH0sIFtdKVxuXHRcdFx0XHQuam9pbihcIixcIikgfHwgXCJcIlxuXHRcdCk7XG5cdH1cblxuXHRnZXRUZW1wbGF0ZSgpIHtcblx0XHRyZXR1cm4geG1sYFxuXHRcdFx0PGZlOk11bHRpcGxlTW9kZUNvbnRyb2xcblx0XHRcdFx0eG1sbnM9XCJzYXAubVwiXG5cdFx0XHRcdHhtbG5zOmZlPVwic2FwLmZlLnRlbXBsYXRlcy5MaXN0UmVwb3J0LmNvbnRyb2xzXCJcblx0XHRcdFx0eG1sbnM6Y29yZT1cInNhcC51aS5jb3JlXCJcblx0XHRcdFx0eG1sbnM6bWFjcm89XCJzYXAuZmUubWFjcm9zXCJcblx0XHRcdFx0c2VsZWN0PVwiLmhhbmRsZXJzLm9uVGFiTXVsdGlNb2RlQ2hhbmdlXCJcblx0XHRcdFx0aW5uZXJDb250cm9scz0gXCIke3RoaXMuZ2V0SW5uZXJDb250cm9sc0FQSSgpfVwiXG5cdFx0XHRcdHNob3dDb3VudHM9XCIke3RoaXMuY29udmVydGVyQ29udGV4dC5tdWx0aVZpZXdzQ29udHJvbD8uc2hvd1RhYkNvdW50c31cIlxuXHRcdFx0XHRmcmVlemVDb250ZW50PVwidHJ1ZVwiXG5cdFx0XHRcdGlkPVwiJHt0aGlzLmNvbnZlcnRlckNvbnRleHQubXVsdGlWaWV3c0NvbnRyb2w/LmlkfTo6Q29udHJvbFwiXG5cdFx0XHQ+XG5cdFx0XHRcdDxJY29uVGFiQmFyXG5cdFx0XHRcdFx0ZXhwYW5kYWJsZT1cImZhbHNlXCJcblx0XHRcdFx0XHRoZWFkZXJNb2RlPVwiSW5saW5lXCJcblx0XHRcdFx0XHRpZD1cIiR7dGhpcy5jb252ZXJ0ZXJDb250ZXh0Lm11bHRpVmlld3NDb250cm9sPy5pZH1cIlxuXHRcdFx0XHRcdHN0cmV0Y2hDb250ZW50SGVpZ2h0PVwidHJ1ZVwiXG5cdFx0XHRcdD5cblx0XHRcdFx0XHQ8aXRlbXM+XG5cdFx0XHRcdFx0JHt0aGlzLmNvbnZlcnRlckNvbnRleHQudmlld3Ncblx0XHRcdFx0XHRcdC5tYXAoKHZpZXcsIHZpZXdJZHgpID0+IHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGA8dGVtcGxhdGU6d2l0aCBwYXRoPVwiY29udmVydGVyQ29udGV4dD52aWV3cy8ke3ZpZXdJZHh9L1wiIHZhcj1cInZpZXdcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0ZW1wbGF0ZTpyZXF1aXJlPVwie1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdElEOiAnc2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlcidcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHhtbG5zOmNvcmU9XCJzYXAudWkuY29yZVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHhtbG5zOnRlbXBsYXRlPVwiaHR0cDovL3NjaGVtYXMuc2FwLmNvbS9zYXB1aTUvZXh0ZW5zaW9uL3NhcC51aS5jb3JlLnRlbXBsYXRlLzFcIj5cblx0XHRcdFx0XHRcdFx0XHQ8dGVtcGxhdGU6d2l0aCBwYXRoPVwidmlldz5wcmVzZW50YXRpb25cIiB2YXI9XCJwcmVzZW50YXRpb25Db250ZXh0XCI+XG5cdFx0XHRcdFx0XHRcdFx0PEljb25UYWJGaWx0ZXJcblx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9XCIke3ZpZXcudGl0bGV9XCJcblx0XHRcdFx0XHRcdFx0XHRcdGtleT1cIns9IElELmdlbmVyYXRlKFtcXCR7dmlldz50YWJsZUNvbnRyb2xJZH0gfHwgXFwke3ZpZXc+Y3VzdG9tVGFiSWR9IHx8IFxcJHt2aWV3PmNoYXJ0Q29udHJvbElkfV0pfVwiXG5cdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlPVwie3ZpZXc+dmlzaWJsZX1cIlxuXHRcdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHRcdDxjb250ZW50PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGVtcGxhdGU6aWYgdGVzdD1cIns9IFxcJHt2aWV3PnR5cGV9ID09PSAnQ3VzdG9tJ31cIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGVtcGxhdGU6dGhlbj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxjb3JlOkZyYWdtZW50IGZyYWdtZW50TmFtZT1cInNhcC5mZS50ZW1wbGF0ZXMuTGlzdFJlcG9ydC52aWV3LmZyYWdtZW50cy5DdXN0b21WaWV3XCIgdHlwZT1cIlhNTFwiIC8+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC90ZW1wbGF0ZTp0aGVuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZW1wbGF0ZTplbHNlPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PE1lc3NhZ2VTdHJpcFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PVwiez0gJ3s9IChcXCR7dGFic0ludGVybmFsPi8nICsgKFxcJHt2aWV3PnRhYmxlQ29udHJvbElkfSB8fCBcXCR7dmlldz5jaGFydENvbnRyb2xJZH0pICsgJy9ub3RBcHBsaWNhYmxlL3RpdGxlfSApIH0nIH1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlPVwiSW5mb3JtYXRpb25cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzaG93SWNvbj1cInRydWVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzaG93Q2xvc2VCdXR0b249XCJ0cnVlXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzYXBVaVNtYWxsTWFyZ2luXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmlzaWJsZT1cIns9ICd7PSAoXFwke3RhYnNJbnRlcm5hbD4vJyArIChcXCR7dmlldz50YWJsZUNvbnRyb2xJZH0gfHwgXFwke3ZpZXc+Y2hhcnRDb250cm9sSWR9KSArICcvbm90QXBwbGljYWJsZS9maWVsZHN9IHx8IFtdKS5sZW5ndGg+MCB9JyB9XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvTWVzc2FnZVN0cmlwPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGNvcmU6RnJhZ21lbnQgZnJhZ21lbnROYW1lPVwic2FwLmZlLnRlbXBsYXRlcy5MaXN0UmVwb3J0LnZpZXcuZnJhZ21lbnRzLkNvbGxlY3Rpb25WaXN1YWxpemF0aW9uXCIgdHlwZT1cIlhNTFwiIC8+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC90ZW1wbGF0ZTplbHNlPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3RlbXBsYXRlOmlmPlxuXHRcdFx0XHRcdFx0XHRcdFx0PC9jb250ZW50PlxuXHRcdFx0XHRcdFx0XHRcdDwvSWNvblRhYkZpbHRlcj5cblx0XHRcdFx0XHRcdFx0PC90ZW1wbGF0ZTp3aXRoPjwvdGVtcGxhdGU6d2l0aD5gO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdC5qb2luKFwiXCIpfVxuXHRcdFx0XHRcdDwvaXRlbXM+XG5cdFx0XHRcdDwvSWNvblRhYkJhcj5cblx0XHRcdDwvZmU6TXVsdGlwbGVNb2RlQ29udHJvbD5gO1xuXHR9XG59XG4iXX0=
@@ -1,62 +1,90 @@
1
1
  import { BuildingBlockBase, defineBuildingBlock, xmlAttribute } from "sap/fe/core/buildingBlocks/BuildingBlock";
2
2
  import { xml } from "sap/fe/core/buildingBlocks/BuildingBlockRuntime";
3
- import { ListReportDefinition } from "sap/fe/core/converters/templates/ListReportConverter";
3
+ import type {
4
+ ListReportDefinition,
5
+ SingleChartViewDefinition,
6
+ SingleTableViewDefinition
7
+ } from "sap/fe/core/converters/templates/ListReportConverter";
4
8
 
5
9
  @defineBuildingBlock({ name: "MultipleMode", namespace: "sap.fe.templates.ListReport.view.fragments", isOpen: true })
6
10
  export default class MultipleMode extends BuildingBlockBase {
7
11
  @xmlAttribute({ type: "sap.ui.model.Context" })
8
12
  converterContext!: ListReportDefinition;
9
13
 
14
+ getInnerControlsAPI() {
15
+ return (
16
+ this.converterContext?.views
17
+ .reduce((innerControls: string[], view) => {
18
+ const innerControlId =
19
+ (view as SingleTableViewDefinition).tableControlId || (view as SingleChartViewDefinition).chartControlId;
20
+ if (innerControlId) {
21
+ innerControls.push(`${innerControlId}::${(view as SingleTableViewDefinition).tableControlId ? "Table" : "Chart"}`);
22
+ }
23
+ return innerControls;
24
+ }, [])
25
+ .join(",") || ""
26
+ );
27
+ }
28
+
10
29
  getTemplate() {
11
30
  return xml`
12
- <IconTabBar
31
+ <fe:MultipleModeControl
13
32
  xmlns="sap.m"
14
-
15
- xmlns:customData="http://schemas.sap.com/sapui5/extension/sap.ui.core.CustomData/1"
16
- expandable="false"
17
- headerMode="Inline"
18
- id="${this.converterContext.iconTabBarId}"
33
+ xmlns:fe="sap.fe.templates.ListReport.controls"
34
+ xmlns:core="sap.ui.core"
35
+ xmlns:macro="sap.fe.macros"
19
36
  select=".handlers.onTabMultiModeChange"
20
- stretchContentHeight="true"
21
- customData:showCounts="${this.converterContext.showTabCounts}"
37
+ innerControls= "${this.getInnerControlsAPI()}"
38
+ showCounts="${this.converterContext.multiViewsControl?.showTabCounts}"
39
+ freezeContent="true"
40
+ id="${this.converterContext.multiViewsControl?.id}::Control"
22
41
  >
23
- <items>
24
- ${this.converterContext.views
25
- .map((view, viewIdx) => {
26
- return `<template:with path="converterContext>views/${viewIdx}/" var="view"
27
- xmlns:core="sap.ui.core"
28
- xmlns:template="http://schemas.sap.com/sapui5/extension/sap.ui.core.template/1">
29
- <template:with path="view>presentation" var="presentationContext">
30
- <IconTabFilter
31
- text="${view.title}"
32
- key="{= \${view>tableControlId} || \${view>customTabId} || \${view>chartControlId}}"
33
- customData:selectionVariant="{view>selectionVariantPath}"
34
- visible="{view>visible}"
35
- >
36
- <content>
37
- <template:if test="{= \${view>type} === 'Custom'}">
38
- <template:then>
39
- <core:Fragment fragmentName="sap.fe.templates.ListReport.view.fragments.CustomView" type="XML" />
40
- </template:then>
41
- <template:else>
42
- <MessageStrip
43
- text="{= '{= (\${internal>tabs/ignoredFieldsTitle/' + (\${view>tableControlId} || \${view>chartControlId}) + '} ) }' }"
44
- type="Information"
45
- showIcon="true"
46
- showCloseButton="true"
47
- class="sapUiSmallMargin"
48
- visible="{= '{= (\${internal>tabs/ignoredFields/' +(\${view>tableControlId} || \${view>chartControlId}) + '} || []).length>0 }' }"
49
- >
50
- </MessageStrip>
51
- <core:Fragment fragmentName="sap.fe.templates.ListReport.view.fragments.CollectionVisualization" type="XML" />
52
- </template:else>
53
- </template:if>
54
- </content>
55
- </IconTabFilter>
56
- </template:with></template:with>`;
57
- })
58
- .join("")}
59
- </items>
60
- </IconTabBar>`;
42
+ <IconTabBar
43
+ expandable="false"
44
+ headerMode="Inline"
45
+ id="${this.converterContext.multiViewsControl?.id}"
46
+ stretchContentHeight="true"
47
+ >
48
+ <items>
49
+ ${this.converterContext.views
50
+ .map((view, viewIdx) => {
51
+ return `<template:with path="converterContext>views/${viewIdx}/" var="view"
52
+ template:require="{
53
+ ID: 'sap/fe/core/helpers/StableIdHelper'
54
+ }"
55
+ xmlns:core="sap.ui.core"
56
+ xmlns:template="http://schemas.sap.com/sapui5/extension/sap.ui.core.template/1">
57
+ <template:with path="view>presentation" var="presentationContext">
58
+ <IconTabFilter
59
+ text="${view.title}"
60
+ key="{= ID.generate([\${view>tableControlId} || \${view>customTabId} || \${view>chartControlId}])}"
61
+ visible="{view>visible}"
62
+ >
63
+ <content>
64
+ <template:if test="{= \${view>type} === 'Custom'}">
65
+ <template:then>
66
+ <core:Fragment fragmentName="sap.fe.templates.ListReport.view.fragments.CustomView" type="XML" />
67
+ </template:then>
68
+ <template:else>
69
+ <MessageStrip
70
+ text="{= '{= (\${tabsInternal>/' + (\${view>tableControlId} || \${view>chartControlId}) + '/notApplicable/title} ) }' }"
71
+ type="Information"
72
+ showIcon="true"
73
+ showCloseButton="true"
74
+ class="sapUiSmallMargin"
75
+ visible="{= '{= (\${tabsInternal>/' + (\${view>tableControlId} || \${view>chartControlId}) + '/notApplicable/fields} || []).length>0 }' }"
76
+ >
77
+ </MessageStrip>
78
+ <core:Fragment fragmentName="sap.fe.templates.ListReport.view.fragments.CollectionVisualization" type="XML" />
79
+ </template:else>
80
+ </template:if>
81
+ </content>
82
+ </IconTabFilter>
83
+ </template:with></template:with>`;
84
+ })
85
+ .join("")}
86
+ </items>
87
+ </IconTabBar>
88
+ </fe:MultipleModeControl>`;
61
89
  }
62
90
  }
@@ -6,7 +6,7 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/converters/helpers/ID", "
6
6
  "use strict";
7
7
 
8
8
  var defineUI5Class = ClassSupport.defineUI5Class;
9
- var SideContentLayoutID = ID.SideContentLayoutID;
9
+ var getSideContentLayoutID = ID.getSideContentLayoutID;
10
10
 
11
11
  function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
12
12
 
@@ -27,11 +27,10 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/converters/helpers/ID", "
27
27
  * Refreshes either the whole object page or only parts of it.
28
28
  *
29
29
  * @alias sap.fe.templates.ObjectPage.ExtensionAPI#refresh
30
- * @param {string | string[]} [vPath] Path or array of paths referring to entities or properties to be refreshed.
30
+ * @param [vPath] Path or array of paths referring to entities or properties to be refreshed.
31
31
  * If omitted, the whole object page is refreshed. The path "" refreshes the entity assigned to the object page
32
32
  * without navigations
33
- * @returns {Promise} Resolved once the data is refreshed or rejected if the request failed
34
- *
33
+ * @returns Resolved once the data is refreshed or rejected if the request failed
35
34
  * @public
36
35
  */
37
36
  _proto.refresh = function refresh(vPath) {
@@ -64,7 +63,7 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/converters/helpers/ID", "
64
63
  $PropertyPath: "*"
65
64
  });
66
65
  } else {
67
- sKind = oMetaModel.getObject("/" + sBaseEntitySet + "/" + sPath + "/$kind");
66
+ sKind = oMetaModel.getObject("/".concat(sBaseEntitySet, "/").concat(sPath, "/$kind"));
68
67
 
69
68
  if (sKind === "NavigationProperty") {
70
69
  oSideEffects.TargetEntities.push({
@@ -75,7 +74,7 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/converters/helpers/ID", "
75
74
  $PropertyPath: sPath
76
75
  });
77
76
  } else {
78
- return Promise.reject(sPath + " is not a valid path to be refreshed");
77
+ return Promise.reject("".concat(sPath, " is not a valid path to be refreshed"));
79
78
  }
80
79
  }
81
80
  }
@@ -87,9 +86,8 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/converters/helpers/ID", "
87
86
  * Gets the list entries currently selected for the table.
88
87
  *
89
88
  * @alias sap.fe.templates.ObjectPage.ExtensionAPI#getSelectedContexts
90
- * @param {string} sTableId The ID identifying the table the selected context is requested for
91
- * @returns {sap.ui.model.odata.v4.Context[]} Array containing the selected contexts
92
- *
89
+ * @param sTableId The ID identifying the table the selected context is requested for
90
+ * @returns Array containing the selected contexts
93
91
  * @public
94
92
  */
95
93
  ;
@@ -107,15 +105,14 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/converters/helpers/ID", "
107
105
  * Displays or hides the side content of an object page block.
108
106
  *
109
107
  * @alias sap.fe.templates.ObjectPage.ExtensionAPI#showSideContent
110
- * @param {string} sSubSectionKey Key of the side content fragment as defined in the manifest.json
111
- * @param {boolean} [bShow] Optional Boolean flag to show or hide the side content
112
- *
108
+ * @param sSubSectionKey Key of the side content fragment as defined in the manifest.json
109
+ * @param [bShow] Optional Boolean flag to show or hide the side content
113
110
  * @public
114
111
  */
115
112
  ;
116
113
 
117
114
  _proto.showSideContent = function showSideContent(sSubSectionKey, bShow) {
118
- var sBlockID = SideContentLayoutID(sSubSectionKey),
115
+ var sBlockID = getSideContentLayoutID(sSubSectionKey),
119
116
  oBlock = this._view.byId(sBlockID),
120
117
  bBlockState = bShow === undefined ? !oBlock.getShowSideContent() : bShow;
121
118
 
@@ -125,8 +122,7 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/converters/helpers/ID", "
125
122
  * Gets the bound context of the current object page.
126
123
  *
127
124
  * @alias sap.fe.templates.ObjectPage.ExtensionAPI#getBindingContext
128
- * @returns {sap.ui.model.odata.v4.Context} Context bound to the object page
129
- *
125
+ * @returns Context bound to the object page
130
126
  * @public
131
127
  */
132
128
  ;
@@ -140,4 +136,4 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/converters/helpers/ID", "
140
136
 
141
137
  return ObjectPageExtensionAPI;
142
138
  }, false);
143
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkV4dGVuc2lvbkFQSS50cyJdLCJuYW1lcyI6WyJkZWZpbmVVSTVDbGFzcyIsIk9iamVjdFBhZ2VFeHRlbnNpb25BUEkiLCJyZWZyZXNoIiwidlBhdGgiLCJvQmluZGluZ0NvbnRleHQiLCJfdmlldyIsImdldEJpbmRpbmdDb250ZXh0Iiwib0FwcENvbXBvbmVudCIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50Iiwib1NpZGVFZmZlY3RzU2VydmljZSIsImdldFNpZGVFZmZlY3RzU2VydmljZSIsIm9NZXRhTW9kZWwiLCJnZXRNb2RlbCIsImdldE1ldGFNb2RlbCIsIm9TaWRlRWZmZWN0cyIsIlRhcmdldFByb3BlcnRpZXMiLCJUYXJnZXRFbnRpdGllcyIsImFQYXRocyIsInNQYXRoIiwic0Jhc2VFbnRpdHlTZXQiLCJzS2luZCIsInVuZGVmaW5lZCIsInB1c2giLCIkTmF2aWdhdGlvblByb3BlcnR5UGF0aCIsIkFycmF5IiwiaXNBcnJheSIsIl9jb250cm9sbGVyIiwiZ2V0T3duZXJDb21wb25lbnQiLCJnZXRFbnRpdHlTZXQiLCJpIiwibGVuZ3RoIiwiJFByb3BlcnR5UGF0aCIsImdldE9iamVjdCIsIlByb21pc2UiLCJyZWplY3QiLCJyZXF1ZXN0U2lkZUVmZmVjdHMiLCJjb25jYXQiLCJnZXRTZWxlY3RlZENvbnRleHRzIiwic1RhYmxlSWQiLCJvVGFibGUiLCJieUlkIiwiaXNBIiwiZ2V0Q29udGVudCIsInNob3dTaWRlQ29udGVudCIsInNTdWJTZWN0aW9uS2V5IiwiYlNob3ciLCJzQmxvY2tJRCIsIlNpZGVDb250ZW50TGF5b3V0SUQiLCJvQmxvY2siLCJiQmxvY2tTdGF0ZSIsImdldFNob3dTaWRlQ29udGVudCIsInNldFNob3dTaWRlQ29udGVudCIsIkV4dGVuc2lvbkFQSSJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7QUFNQUEsRUFBQUEsY0FBYyxDQUFDLDBDQUFELENBQWQ7O01BRU1DLHNCOzs7Ozs7Ozs7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O0FBQ25ERixRQUFBQSxNQUFNLEdBQUlBLE1BQUQsQ0FBcUNHLFVBQXJDLEVBQVQ7QUFDQTs7QUFDRCxhQUFRSCxNQUFNLElBQUlBLE1BQU0sQ0FBQ0UsR0FBUCxDQUFXLGtCQUFYLENBQVYsSUFBNkNGLE1BQUQsQ0FBZ0JGLG1CQUFoQixFQUE3QyxJQUF1RixFQUE5RjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7V0FDQ00sZSxHQUFBLHlCQUFnQkMsY0FBaEIsRUFBd0NDLEtBQXhDLEVBQW9FO0FBQ25FLFVBQU1DLFFBQVEsR0FBR0MsbUJBQW1CLENBQUNILGNBQUQsQ0FBcEM7QUFBQSxVQUNDSSxNQUFNLEdBQUcsS0FBSzVDLEtBQUwsQ0FBV29DLElBQVgsQ0FBZ0JNLFFBQWhCLENBRFY7QUFBQSxVQUVDRyxXQUFXLEdBQUdKLEtBQUssS0FBS3hCLFNBQVYsR0FBc0IsQ0FBRTJCLE1BQUQsQ0FBK0JFLGtCQUEvQixFQUF2QixHQUE2RUwsS0FGNUY7O0FBR0NHLE1BQUFBLE1BQUQsQ0FBK0JHLGtCQUEvQixDQUFrREYsV0FBbEQsRUFBK0QsS0FBL0Q7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztXQUNDNUMsaUIsR0FBQSw2QkFBb0I7QUFDbkIsYUFBTyxLQUFLRCxLQUFMLENBQVdDLGlCQUFYLEVBQVA7QUFDQSxLOzs7SUF0R21DK0MsWTs7U0F5R3RCcEQsc0IiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB7IFNpZGVDb250ZW50TGF5b3V0SUQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0lEXCI7XG5pbXBvcnQgRXh0ZW5zaW9uQVBJIGZyb20gXCJzYXAvZmUvY29yZS9FeHRlbnNpb25BUElcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBFbmhhbmNlV2l0aFVJNSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IFRhYmxlQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL1RhYmxlQVBJXCI7XG5pbXBvcnQgRHluYW1pY1NpZGVDb250ZW50IGZyb20gXCJzYXAvdWkvbGF5b3V0L0R5bmFtaWNTaWRlQ29udGVudFwiO1xuaW1wb3J0IENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUudGVtcGxhdGVzLk9iamVjdFBhZ2UuRXh0ZW5zaW9uQVBJXCIpO1xuXG5jbGFzcyBPYmplY3RQYWdlRXh0ZW5zaW9uQVBJIGV4dGVuZHMgRXh0ZW5zaW9uQVBJIHtcblx0LyoqXG5cdCAqIFJlZnJlc2hlcyBlaXRoZXIgdGhlIHdob2xlIG9iamVjdCBwYWdlIG9yIG9ubHkgcGFydHMgb2YgaXQuXG5cdCAqXG5cdCAqIEBhbGlhcyBzYXAuZmUudGVtcGxhdGVzLk9iamVjdFBhZ2UuRXh0ZW5zaW9uQVBJI3JlZnJlc2hcblx0ICogQHBhcmFtIHtzdHJpbmcgfCBzdHJpbmdbXX0gW3ZQYXRoXSBQYXRoIG9yIGFycmF5IG9mIHBhdGhzIHJlZmVycmluZyB0byBlbnRpdGllcyBvciBwcm9wZXJ0aWVzIHRvIGJlIHJlZnJlc2hlZC5cblx0ICogSWYgb21pdHRlZCwgdGhlIHdob2xlIG9iamVjdCBwYWdlIGlzIHJlZnJlc2hlZC4gVGhlIHBhdGggXCJcIiByZWZyZXNoZXMgdGhlIGVudGl0eSBhc3NpZ25lZCB0byB0aGUgb2JqZWN0IHBhZ2Vcblx0ICogd2l0aG91dCBuYXZpZ2F0aW9uc1xuXHQgKiBAcmV0dXJucyB7UHJvbWlzZX0gUmVzb2x2ZWQgb25jZSB0aGUgZGF0YSBpcyByZWZyZXNoZWQgb3IgcmVqZWN0ZWQgaWYgdGhlIHJlcXVlc3QgZmFpbGVkXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHJlZnJlc2godlBhdGg6IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkKSB7XG5cdFx0Y29uc3Qgb0JpbmRpbmdDb250ZXh0ID0gdGhpcy5fdmlldy5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQsXG5cdFx0XHRvQXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHRoaXMuX3ZpZXcpLFxuXHRcdFx0b1NpZGVFZmZlY3RzU2VydmljZSA9IG9BcHBDb21wb25lbnQuZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCksXG5cdFx0XHRvTWV0YU1vZGVsID0gb0JpbmRpbmdDb250ZXh0LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCkgYXMgT0RhdGFNZXRhTW9kZWwsXG5cdFx0XHRvU2lkZUVmZmVjdHM6IGFueSA9IHtcblx0XHRcdFx0VGFyZ2V0UHJvcGVydGllczogW10sXG5cdFx0XHRcdFRhcmdldEVudGl0aWVzOiBbXVxuXHRcdFx0fTtcblx0XHRsZXQgYVBhdGhzLCBzUGF0aCwgc0Jhc2VFbnRpdHlTZXQsIHNLaW5kO1xuXG5cdFx0aWYgKHZQYXRoID09PSB1bmRlZmluZWQgfHwgdlBhdGggPT09IG51bGwpIHtcblx0XHRcdC8vIHdlIGp1c3QgYWRkIGFuIGVtcHR5IHBhdGggd2hpY2ggc2hvdWxkIHJlZnJlc2ggdGhlIHBhZ2Ugd2l0aCBhbGwgZGVwZW5kZW50IGJpbmRpbmdzXG5cdFx0XHRvU2lkZUVmZmVjdHMuVGFyZ2V0RW50aXRpZXMucHVzaCh7XG5cdFx0XHRcdCROYXZpZ2F0aW9uUHJvcGVydHlQYXRoOiBcIlwiXG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0YVBhdGhzID0gQXJyYXkuaXNBcnJheSh2UGF0aCkgPyB2UGF0aCA6IFt2UGF0aF07XG5cdFx0XHRzQmFzZUVudGl0eVNldCA9ICh0aGlzLl9jb250cm9sbGVyLmdldE93bmVyQ29tcG9uZW50KCkgYXMgYW55KS5nZXRFbnRpdHlTZXQoKTtcblxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhUGF0aHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0c1BhdGggPSBhUGF0aHNbaV07XG5cdFx0XHRcdGlmIChzUGF0aCA9PT0gXCJcIikge1xuXHRcdFx0XHRcdC8vIGFuIGVtcHR5IHBhdGggc2hhbGwgcmVmcmVzaCB0aGUgZW50aXR5IHdpdGhvdXQgZGVwZW5kZW5jaWVzIHdoaWNoIG1lYW5zICogZm9yIHRoZSBtb2RlbFxuXHRcdFx0XHRcdG9TaWRlRWZmZWN0cy5UYXJnZXRQcm9wZXJ0aWVzLnB1c2goe1xuXHRcdFx0XHRcdFx0JFByb3BlcnR5UGF0aDogXCIqXCJcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzS2luZCA9IG9NZXRhTW9kZWwuZ2V0T2JqZWN0KFwiL1wiICsgc0Jhc2VFbnRpdHlTZXQgKyBcIi9cIiArIHNQYXRoICsgXCIvJGtpbmRcIik7XG5cblx0XHRcdFx0XHRpZiAoc0tpbmQgPT09IFwiTmF2aWdhdGlvblByb3BlcnR5XCIpIHtcblx0XHRcdFx0XHRcdG9TaWRlRWZmZWN0cy5UYXJnZXRFbnRpdGllcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0JE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGg6IHNQYXRoXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHNLaW5kKSB7XG5cdFx0XHRcdFx0XHRvU2lkZUVmZmVjdHMuVGFyZ2V0UHJvcGVydGllcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0JFByb3BlcnR5UGF0aDogc1BhdGhcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZWplY3Qoc1BhdGggKyBcIiBpcyBub3QgYSB2YWxpZCBwYXRoIHRvIGJlIHJlZnJlc2hlZFwiKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIG9TaWRlRWZmZWN0c1NlcnZpY2UucmVxdWVzdFNpZGVFZmZlY3RzKG9TaWRlRWZmZWN0cy5UYXJnZXRFbnRpdGllcy5jb25jYXQob1NpZGVFZmZlY3RzLlRhcmdldFByb3BlcnRpZXMpLCBvQmluZGluZ0NvbnRleHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGxpc3QgZW50cmllcyBjdXJyZW50bHkgc2VsZWN0ZWQgZm9yIHRoZSB0YWJsZS5cblx0ICpcblx0ICogQGFsaWFzIHNhcC5mZS50ZW1wbGF0ZXMuT2JqZWN0UGFnZS5FeHRlbnNpb25BUEkjZ2V0U2VsZWN0ZWRDb250ZXh0c1xuXHQgKiBAcGFyYW0ge3N0cmluZ30gc1RhYmxlSWQgVGhlIElEIGlkZW50aWZ5aW5nIHRoZSB0YWJsZSB0aGUgc2VsZWN0ZWQgY29udGV4dCBpcyByZXF1ZXN0ZWQgZm9yXG5cdCAqIEByZXR1cm5zIHtzYXAudWkubW9kZWwub2RhdGEudjQuQ29udGV4dFtdfSBBcnJheSBjb250YWluaW5nIHRoZSBzZWxlY3RlZCBjb250ZXh0c1xuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRnZXRTZWxlY3RlZENvbnRleHRzKHNUYWJsZUlkOiBzdHJpbmcpIHtcblx0XHRsZXQgb1RhYmxlID0gdGhpcy5fdmlldy5ieUlkKHNUYWJsZUlkKTtcblx0XHRpZiAob1RhYmxlICYmIG9UYWJsZS5pc0EoXCJzYXAuZmUubWFjcm9zLlRhYmxlQVBJXCIpKSB7XG5cdFx0XHRvVGFibGUgPSAob1RhYmxlIGFzIEVuaGFuY2VXaXRoVUk1PFRhYmxlQVBJPikuZ2V0Q29udGVudCgpO1xuXHRcdH1cblx0XHRyZXR1cm4gKG9UYWJsZSAmJiBvVGFibGUuaXNBKFwic2FwLnVpLm1kYy5UYWJsZVwiKSAmJiAob1RhYmxlIGFzIGFueSkuZ2V0U2VsZWN0ZWRDb250ZXh0cygpKSB8fCBbXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEaXNwbGF5cyBvciBoaWRlcyB0aGUgc2lkZSBjb250ZW50IG9mIGFuIG9iamVjdCBwYWdlIGJsb2NrLlxuXHQgKlxuXHQgKiBAYWxpYXMgc2FwLmZlLnRlbXBsYXRlcy5PYmplY3RQYWdlLkV4dGVuc2lvbkFQSSNzaG93U2lkZUNvbnRlbnRcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNTdWJTZWN0aW9uS2V5IEtleSBvZiB0aGUgc2lkZSBjb250ZW50IGZyYWdtZW50IGFzIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0Lmpzb25cblx0ICogQHBhcmFtIHtib29sZWFufSBbYlNob3ddIE9wdGlvbmFsIEJvb2xlYW4gZmxhZyB0byBzaG93IG9yIGhpZGUgdGhlIHNpZGUgY29udGVudFxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRzaG93U2lkZUNvbnRlbnQoc1N1YlNlY3Rpb25LZXk6IHN0cmluZywgYlNob3c6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcblx0XHRjb25zdCBzQmxvY2tJRCA9IFNpZGVDb250ZW50TGF5b3V0SUQoc1N1YlNlY3Rpb25LZXkpLFxuXHRcdFx0b0Jsb2NrID0gdGhpcy5fdmlldy5ieUlkKHNCbG9ja0lEKSxcblx0XHRcdGJCbG9ja1N0YXRlID0gYlNob3cgPT09IHVuZGVmaW5lZCA/ICEob0Jsb2NrIGFzIER5bmFtaWNTaWRlQ29udGVudCkuZ2V0U2hvd1NpZGVDb250ZW50KCkgOiBiU2hvdztcblx0XHQob0Jsb2NrIGFzIER5bmFtaWNTaWRlQ29udGVudCkuc2V0U2hvd1NpZGVDb250ZW50KGJCbG9ja1N0YXRlLCBmYWxzZSk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgYm91bmQgY29udGV4dCBvZiB0aGUgY3VycmVudCBvYmplY3QgcGFnZS5cblx0ICpcblx0ICogQGFsaWFzIHNhcC5mZS50ZW1wbGF0ZXMuT2JqZWN0UGFnZS5FeHRlbnNpb25BUEkjZ2V0QmluZGluZ0NvbnRleHRcblx0ICogQHJldHVybnMge3NhcC51aS5tb2RlbC5vZGF0YS52NC5Db250ZXh0fSBDb250ZXh0IGJvdW5kIHRvIHRoZSBvYmplY3QgcGFnZVxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRnZXRCaW5kaW5nQ29udGV4dCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fdmlldy5nZXRCaW5kaW5nQ29udGV4dCgpO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE9iamVjdFBhZ2VFeHRlbnNpb25BUEk7XG4iXX0=
139
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkV4dGVuc2lvbkFQSS50cyJdLCJuYW1lcyI6WyJkZWZpbmVVSTVDbGFzcyIsIk9iamVjdFBhZ2VFeHRlbnNpb25BUEkiLCJyZWZyZXNoIiwidlBhdGgiLCJvQmluZGluZ0NvbnRleHQiLCJfdmlldyIsImdldEJpbmRpbmdDb250ZXh0Iiwib0FwcENvbXBvbmVudCIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50Iiwib1NpZGVFZmZlY3RzU2VydmljZSIsImdldFNpZGVFZmZlY3RzU2VydmljZSIsIm9NZXRhTW9kZWwiLCJnZXRNb2RlbCIsImdldE1ldGFNb2RlbCIsIm9TaWRlRWZmZWN0cyIsIlRhcmdldFByb3BlcnRpZXMiLCJUYXJnZXRFbnRpdGllcyIsImFQYXRocyIsInNQYXRoIiwic0Jhc2VFbnRpdHlTZXQiLCJzS2luZCIsInVuZGVmaW5lZCIsInB1c2giLCIkTmF2aWdhdGlvblByb3BlcnR5UGF0aCIsIkFycmF5IiwiaXNBcnJheSIsIl9jb250cm9sbGVyIiwiZ2V0T3duZXJDb21wb25lbnQiLCJnZXRFbnRpdHlTZXQiLCJpIiwibGVuZ3RoIiwiJFByb3BlcnR5UGF0aCIsImdldE9iamVjdCIsIlByb21pc2UiLCJyZWplY3QiLCJyZXF1ZXN0U2lkZUVmZmVjdHMiLCJjb25jYXQiLCJnZXRTZWxlY3RlZENvbnRleHRzIiwic1RhYmxlSWQiLCJvVGFibGUiLCJieUlkIiwiaXNBIiwiZ2V0Q29udGVudCIsInNob3dTaWRlQ29udGVudCIsInNTdWJTZWN0aW9uS2V5IiwiYlNob3ciLCJzQmxvY2tJRCIsImdldFNpZGVDb250ZW50TGF5b3V0SUQiLCJvQmxvY2siLCJiQmxvY2tTdGF0ZSIsImdldFNob3dTaWRlQ29udGVudCIsInNldFNob3dTaWRlQ29udGVudCIsIkV4dGVuc2lvbkFQSSJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7QUFPQUEsRUFBQUEsY0FBYyxDQUFDLDBDQUFELENBQWQ7O01BRU1DLHNCOzs7Ozs7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QUFUO0FBQ0E7O0FBQ0QsYUFBUUgsTUFBTSxJQUFJQSxNQUFNLENBQUNFLEdBQVAsQ0FBVyxrQkFBWCxDQUFWLElBQTZDRixNQUFELENBQWdCRixtQkFBaEIsRUFBN0MsSUFBdUYsRUFBOUY7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztXQUNDTSxlLEdBQUEseUJBQWdCQyxjQUFoQixFQUF3Q0MsS0FBeEMsRUFBb0U7QUFDbkUsVUFBTUMsUUFBUSxHQUFHQyxzQkFBc0IsQ0FBQ0gsY0FBRCxDQUF2QztBQUFBLFVBQ0NJLE1BQU0sR0FBRyxLQUFLNUMsS0FBTCxDQUFXb0MsSUFBWCxDQUFnQk0sUUFBaEIsQ0FEVjtBQUFBLFVBRUNHLFdBQVcsR0FBR0osS0FBSyxLQUFLeEIsU0FBVixHQUFzQixDQUFFMkIsTUFBRCxDQUErQkUsa0JBQS9CLEVBQXZCLEdBQTZFTCxLQUY1Rjs7QUFHQ0csTUFBQUEsTUFBRCxDQUErQkcsa0JBQS9CLENBQWtERixXQUFsRCxFQUErRCxLQUEvRDtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztXQUNDNUMsaUIsR0FBQSw2QkFBb0I7QUFDbkIsYUFBTyxLQUFLRCxLQUFMLENBQVdDLGlCQUFYLEVBQVA7QUFDQSxLOzs7SUFsR21DK0MsWTs7U0FxR3RCcEQsc0IiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB7IGdldFNpZGVDb250ZW50TGF5b3V0SUQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0lEXCI7XG5pbXBvcnQgRXh0ZW5zaW9uQVBJIGZyb20gXCJzYXAvZmUvY29yZS9FeHRlbnNpb25BUElcIjtcbmltcG9ydCB0eXBlIHsgRW5oYW5jZVdpdGhVSTUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSBUYWJsZUFQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9UYWJsZUFQSVwiO1xuaW1wb3J0IHR5cGUgRHluYW1pY1NpZGVDb250ZW50IGZyb20gXCJzYXAvdWkvbGF5b3V0L0R5bmFtaWNTaWRlQ29udGVudFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmRlZmluZVVJNUNsYXNzKFwic2FwLmZlLnRlbXBsYXRlcy5PYmplY3RQYWdlLkV4dGVuc2lvbkFQSVwiKTtcblxuY2xhc3MgT2JqZWN0UGFnZUV4dGVuc2lvbkFQSSBleHRlbmRzIEV4dGVuc2lvbkFQSSB7XG5cdC8qKlxuXHQgKiBSZWZyZXNoZXMgZWl0aGVyIHRoZSB3aG9sZSBvYmplY3QgcGFnZSBvciBvbmx5IHBhcnRzIG9mIGl0LlxuXHQgKlxuXHQgKiBAYWxpYXMgc2FwLmZlLnRlbXBsYXRlcy5PYmplY3RQYWdlLkV4dGVuc2lvbkFQSSNyZWZyZXNoXG5cdCAqIEBwYXJhbSBbdlBhdGhdIFBhdGggb3IgYXJyYXkgb2YgcGF0aHMgcmVmZXJyaW5nIHRvIGVudGl0aWVzIG9yIHByb3BlcnRpZXMgdG8gYmUgcmVmcmVzaGVkLlxuXHQgKiBJZiBvbWl0dGVkLCB0aGUgd2hvbGUgb2JqZWN0IHBhZ2UgaXMgcmVmcmVzaGVkLiBUaGUgcGF0aCBcIlwiIHJlZnJlc2hlcyB0aGUgZW50aXR5IGFzc2lnbmVkIHRvIHRoZSBvYmplY3QgcGFnZVxuXHQgKiB3aXRob3V0IG5hdmlnYXRpb25zXG5cdCAqIEByZXR1cm5zIFJlc29sdmVkIG9uY2UgdGhlIGRhdGEgaXMgcmVmcmVzaGVkIG9yIHJlamVjdGVkIGlmIHRoZSByZXF1ZXN0IGZhaWxlZFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRyZWZyZXNoKHZQYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZCkge1xuXHRcdGNvbnN0IG9CaW5kaW5nQ29udGV4dCA9IHRoaXMuX3ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0LFxuXHRcdFx0b0FwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh0aGlzLl92aWV3KSxcblx0XHRcdG9TaWRlRWZmZWN0c1NlcnZpY2UgPSBvQXBwQ29tcG9uZW50LmdldFNpZGVFZmZlY3RzU2VydmljZSgpLFxuXHRcdFx0b01ldGFNb2RlbCA9IG9CaW5kaW5nQ29udGV4dC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpIGFzIE9EYXRhTWV0YU1vZGVsLFxuXHRcdFx0b1NpZGVFZmZlY3RzOiBhbnkgPSB7XG5cdFx0XHRcdFRhcmdldFByb3BlcnRpZXM6IFtdLFxuXHRcdFx0XHRUYXJnZXRFbnRpdGllczogW11cblx0XHRcdH07XG5cdFx0bGV0IGFQYXRocywgc1BhdGgsIHNCYXNlRW50aXR5U2V0LCBzS2luZDtcblxuXHRcdGlmICh2UGF0aCA9PT0gdW5kZWZpbmVkIHx8IHZQYXRoID09PSBudWxsKSB7XG5cdFx0XHQvLyB3ZSBqdXN0IGFkZCBhbiBlbXB0eSBwYXRoIHdoaWNoIHNob3VsZCByZWZyZXNoIHRoZSBwYWdlIHdpdGggYWxsIGRlcGVuZGVudCBiaW5kaW5nc1xuXHRcdFx0b1NpZGVFZmZlY3RzLlRhcmdldEVudGl0aWVzLnB1c2goe1xuXHRcdFx0XHQkTmF2aWdhdGlvblByb3BlcnR5UGF0aDogXCJcIlxuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGFQYXRocyA9IEFycmF5LmlzQXJyYXkodlBhdGgpID8gdlBhdGggOiBbdlBhdGhdO1xuXHRcdFx0c0Jhc2VFbnRpdHlTZXQgPSAodGhpcy5fY29udHJvbGxlci5nZXRPd25lckNvbXBvbmVudCgpIGFzIGFueSkuZ2V0RW50aXR5U2V0KCk7XG5cblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYVBhdGhzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdHNQYXRoID0gYVBhdGhzW2ldO1xuXHRcdFx0XHRpZiAoc1BhdGggPT09IFwiXCIpIHtcblx0XHRcdFx0XHQvLyBhbiBlbXB0eSBwYXRoIHNoYWxsIHJlZnJlc2ggdGhlIGVudGl0eSB3aXRob3V0IGRlcGVuZGVuY2llcyB3aGljaCBtZWFucyAqIGZvciB0aGUgbW9kZWxcblx0XHRcdFx0XHRvU2lkZUVmZmVjdHMuVGFyZ2V0UHJvcGVydGllcy5wdXNoKHtcblx0XHRcdFx0XHRcdCRQcm9wZXJ0eVBhdGg6IFwiKlwiXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0c0tpbmQgPSBvTWV0YU1vZGVsLmdldE9iamVjdChgLyR7c0Jhc2VFbnRpdHlTZXR9LyR7c1BhdGh9LyRraW5kYCk7XG5cblx0XHRcdFx0XHRpZiAoc0tpbmQgPT09IFwiTmF2aWdhdGlvblByb3BlcnR5XCIpIHtcblx0XHRcdFx0XHRcdG9TaWRlRWZmZWN0cy5UYXJnZXRFbnRpdGllcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0JE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGg6IHNQYXRoXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHNLaW5kKSB7XG5cdFx0XHRcdFx0XHRvU2lkZUVmZmVjdHMuVGFyZ2V0UHJvcGVydGllcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0JFByb3BlcnR5UGF0aDogc1BhdGhcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZWplY3QoYCR7c1BhdGh9IGlzIG5vdCBhIHZhbGlkIHBhdGggdG8gYmUgcmVmcmVzaGVkYCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBvU2lkZUVmZmVjdHNTZXJ2aWNlLnJlcXVlc3RTaWRlRWZmZWN0cyhvU2lkZUVmZmVjdHMuVGFyZ2V0RW50aXRpZXMuY29uY2F0KG9TaWRlRWZmZWN0cy5UYXJnZXRQcm9wZXJ0aWVzKSwgb0JpbmRpbmdDb250ZXh0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBsaXN0IGVudHJpZXMgY3VycmVudGx5IHNlbGVjdGVkIGZvciB0aGUgdGFibGUuXG5cdCAqXG5cdCAqIEBhbGlhcyBzYXAuZmUudGVtcGxhdGVzLk9iamVjdFBhZ2UuRXh0ZW5zaW9uQVBJI2dldFNlbGVjdGVkQ29udGV4dHNcblx0ICogQHBhcmFtIHNUYWJsZUlkIFRoZSBJRCBpZGVudGlmeWluZyB0aGUgdGFibGUgdGhlIHNlbGVjdGVkIGNvbnRleHQgaXMgcmVxdWVzdGVkIGZvclxuXHQgKiBAcmV0dXJucyBBcnJheSBjb250YWluaW5nIHRoZSBzZWxlY3RlZCBjb250ZXh0c1xuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRnZXRTZWxlY3RlZENvbnRleHRzKHNUYWJsZUlkOiBzdHJpbmcpIHtcblx0XHRsZXQgb1RhYmxlID0gdGhpcy5fdmlldy5ieUlkKHNUYWJsZUlkKTtcblx0XHRpZiAob1RhYmxlICYmIG9UYWJsZS5pc0EoXCJzYXAuZmUubWFjcm9zLlRhYmxlQVBJXCIpKSB7XG5cdFx0XHRvVGFibGUgPSAob1RhYmxlIGFzIEVuaGFuY2VXaXRoVUk1PFRhYmxlQVBJPikuZ2V0Q29udGVudCgpO1xuXHRcdH1cblx0XHRyZXR1cm4gKG9UYWJsZSAmJiBvVGFibGUuaXNBKFwic2FwLnVpLm1kYy5UYWJsZVwiKSAmJiAob1RhYmxlIGFzIGFueSkuZ2V0U2VsZWN0ZWRDb250ZXh0cygpKSB8fCBbXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEaXNwbGF5cyBvciBoaWRlcyB0aGUgc2lkZSBjb250ZW50IG9mIGFuIG9iamVjdCBwYWdlIGJsb2NrLlxuXHQgKlxuXHQgKiBAYWxpYXMgc2FwLmZlLnRlbXBsYXRlcy5PYmplY3RQYWdlLkV4dGVuc2lvbkFQSSNzaG93U2lkZUNvbnRlbnRcblx0ICogQHBhcmFtIHNTdWJTZWN0aW9uS2V5IEtleSBvZiB0aGUgc2lkZSBjb250ZW50IGZyYWdtZW50IGFzIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0Lmpzb25cblx0ICogQHBhcmFtIFtiU2hvd10gT3B0aW9uYWwgQm9vbGVhbiBmbGFnIHRvIHNob3cgb3IgaGlkZSB0aGUgc2lkZSBjb250ZW50XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHNob3dTaWRlQ29udGVudChzU3ViU2VjdGlvbktleTogc3RyaW5nLCBiU2hvdzogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuXHRcdGNvbnN0IHNCbG9ja0lEID0gZ2V0U2lkZUNvbnRlbnRMYXlvdXRJRChzU3ViU2VjdGlvbktleSksXG5cdFx0XHRvQmxvY2sgPSB0aGlzLl92aWV3LmJ5SWQoc0Jsb2NrSUQpLFxuXHRcdFx0YkJsb2NrU3RhdGUgPSBiU2hvdyA9PT0gdW5kZWZpbmVkID8gIShvQmxvY2sgYXMgRHluYW1pY1NpZGVDb250ZW50KS5nZXRTaG93U2lkZUNvbnRlbnQoKSA6IGJTaG93O1xuXHRcdChvQmxvY2sgYXMgRHluYW1pY1NpZGVDb250ZW50KS5zZXRTaG93U2lkZUNvbnRlbnQoYkJsb2NrU3RhdGUsIGZhbHNlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBib3VuZCBjb250ZXh0IG9mIHRoZSBjdXJyZW50IG9iamVjdCBwYWdlLlxuXHQgKlxuXHQgKiBAYWxpYXMgc2FwLmZlLnRlbXBsYXRlcy5PYmplY3RQYWdlLkV4dGVuc2lvbkFQSSNnZXRCaW5kaW5nQ29udGV4dFxuXHQgKiBAcmV0dXJucyBDb250ZXh0IGJvdW5kIHRvIHRoZSBvYmplY3QgcGFnZVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRnZXRCaW5kaW5nQ29udGV4dCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fdmlldy5nZXRCaW5kaW5nQ29udGV4dCgpO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE9iamVjdFBhZ2VFeHRlbnNpb25BUEk7XG4iXX0=
@@ -1,11 +1,12 @@
1
1
  import CommonUtils from "sap/fe/core/CommonUtils";
2
- import { SideContentLayoutID } from "sap/fe/core/converters/helpers/ID";
2
+ import { getSideContentLayoutID } from "sap/fe/core/converters/helpers/ID";
3
3
  import ExtensionAPI from "sap/fe/core/ExtensionAPI";
4
- import { defineUI5Class, EnhanceWithUI5 } from "sap/fe/core/helpers/ClassSupport";
5
- import TableAPI from "sap/fe/macros/TableAPI";
6
- import DynamicSideContent from "sap/ui/layout/DynamicSideContent";
7
- import Context from "sap/ui/model/odata/v4/Context";
8
- import ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
4
+ import type { EnhanceWithUI5 } from "sap/fe/core/helpers/ClassSupport";
5
+ import { defineUI5Class } from "sap/fe/core/helpers/ClassSupport";
6
+ import type TableAPI from "sap/fe/macros/TableAPI";
7
+ import type DynamicSideContent from "sap/ui/layout/DynamicSideContent";
8
+ import type Context from "sap/ui/model/odata/v4/Context";
9
+ import type ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
9
10
  defineUI5Class("sap.fe.templates.ObjectPage.ExtensionAPI");
10
11
 
11
12
  class ObjectPageExtensionAPI extends ExtensionAPI {
@@ -13,11 +14,10 @@ class ObjectPageExtensionAPI extends ExtensionAPI {
13
14
  * Refreshes either the whole object page or only parts of it.
14
15
  *
15
16
  * @alias sap.fe.templates.ObjectPage.ExtensionAPI#refresh
16
- * @param {string | string[]} [vPath] Path or array of paths referring to entities or properties to be refreshed.
17
+ * @param [vPath] Path or array of paths referring to entities or properties to be refreshed.
17
18
  * If omitted, the whole object page is refreshed. The path "" refreshes the entity assigned to the object page
18
19
  * without navigations
19
- * @returns {Promise} Resolved once the data is refreshed or rejected if the request failed
20
- *
20
+ * @returns Resolved once the data is refreshed or rejected if the request failed
21
21
  * @public
22
22
  */
23
23
  refresh(vPath: string | string[] | undefined) {
@@ -48,7 +48,7 @@ class ObjectPageExtensionAPI extends ExtensionAPI {
48
48
  $PropertyPath: "*"
49
49
  });
50
50
  } else {
51
- sKind = oMetaModel.getObject("/" + sBaseEntitySet + "/" + sPath + "/$kind");
51
+ sKind = oMetaModel.getObject(`/${sBaseEntitySet}/${sPath}/$kind`);
52
52
 
53
53
  if (sKind === "NavigationProperty") {
54
54
  oSideEffects.TargetEntities.push({
@@ -59,7 +59,7 @@ class ObjectPageExtensionAPI extends ExtensionAPI {
59
59
  $PropertyPath: sPath
60
60
  });
61
61
  } else {
62
- return Promise.reject(sPath + " is not a valid path to be refreshed");
62
+ return Promise.reject(`${sPath} is not a valid path to be refreshed`);
63
63
  }
64
64
  }
65
65
  }
@@ -71,9 +71,8 @@ class ObjectPageExtensionAPI extends ExtensionAPI {
71
71
  * Gets the list entries currently selected for the table.
72
72
  *
73
73
  * @alias sap.fe.templates.ObjectPage.ExtensionAPI#getSelectedContexts
74
- * @param {string} sTableId The ID identifying the table the selected context is requested for
75
- * @returns {sap.ui.model.odata.v4.Context[]} Array containing the selected contexts
76
- *
74
+ * @param sTableId The ID identifying the table the selected context is requested for
75
+ * @returns Array containing the selected contexts
77
76
  * @public
78
77
  */
79
78
  getSelectedContexts(sTableId: string) {
@@ -88,13 +87,12 @@ class ObjectPageExtensionAPI extends ExtensionAPI {
88
87
  * Displays or hides the side content of an object page block.
89
88
  *
90
89
  * @alias sap.fe.templates.ObjectPage.ExtensionAPI#showSideContent
91
- * @param {string} sSubSectionKey Key of the side content fragment as defined in the manifest.json
92
- * @param {boolean} [bShow] Optional Boolean flag to show or hide the side content
93
- *
90
+ * @param sSubSectionKey Key of the side content fragment as defined in the manifest.json
91
+ * @param [bShow] Optional Boolean flag to show or hide the side content
94
92
  * @public
95
93
  */
96
94
  showSideContent(sSubSectionKey: string, bShow: boolean | undefined) {
97
- const sBlockID = SideContentLayoutID(sSubSectionKey),
95
+ const sBlockID = getSideContentLayoutID(sSubSectionKey),
98
96
  oBlock = this._view.byId(sBlockID),
99
97
  bBlockState = bShow === undefined ? !(oBlock as DynamicSideContent).getShowSideContent() : bShow;
100
98
  (oBlock as DynamicSideContent).setShowSideContent(bBlockState, false);
@@ -104,8 +102,7 @@ class ObjectPageExtensionAPI extends ExtensionAPI {
104
102
  * Gets the bound context of the current object page.
105
103
  *
106
104
  * @alias sap.fe.templates.ObjectPage.ExtensionAPI#getBindingContext
107
- * @returns {sap.ui.model.odata.v4.Context} Context bound to the object page
108
- *
105
+ * @returns Context bound to the object page
109
106
  * @public
110
107
  */
111
108
  getBindingContext() {
@@ -16,7 +16,8 @@
16
16
  OP: 'sap/fe/templates/ObjectPage/ObjectPageTemplating',
17
17
  CONTACT: 'sap/fe/macros/ContactHelper',
18
18
  UI: 'sap/fe/core/templating/UIFormatters',
19
- COMMON: 'sap/fe/macros/CommonHelper'
19
+ COMMON: 'sap/fe/macros/CommonHelper',
20
+ COMMONFORMATTERS: 'sap/fe/core/templating/CommonFormatters'
20
21
  }"
21
22
  >
22
23
  <template:with path="entitySet>./" var="entityType">
@@ -29,7 +30,7 @@
29
30
  unittest:id="objectPageLayoutTest"
30
31
  customdata:showRelatedApps="{viewData>/showRelatedApps}"
31
32
  customdata:ObjectPageTitle="{headerInfo>TypeName}"
32
- customdata:ObjectPageSubtitle="{headerInfo>Title/Value@@MODEL.value}"
33
+ customdata:ObjectPageSubtitle="{= COMMONFORMATTERS.getBindingWithText(${headerInfo>Title/Value@@UI.getDataModelObjectPath}) }"
33
34
  showHeaderContent="{converterContext>header/showContent}"
34
35
  showFooter="true"
35
36
  busy="{ui>/busy}"
@@ -222,7 +223,7 @@
222
223
  <template:if test="{converterContext>header/visible}">
223
224
  <template:with path="converterContext>header" var="header">
224
225
  <uxap:headerTitle>
225
- <uxap:ObjectPageDynamicHeaderTitle primaryArea="Begin" areaShrinkRatio="0:0:1">
226
+ <uxap:ObjectPageDynamicHeaderTitle primaryArea="Begin" areaShrinkRatio="1:0:1.6">
226
227
  <core:Fragment fragmentName="sap.fe.templates.ObjectPage.view.fragments.Heading" type="XML" />
227
228
  <uxap:expandedContent>
228
229
  <FlexBox>
@@ -283,7 +284,7 @@
283
284
  unittest:id="FlexBoxTest"
284
285
  dt:designtime="sap/fe/templates/ObjectPage/designtime/FlexBox.designtime"
285
286
  wrap="Wrap"
286
- fitContainer="true"
287
+ fitContainer="false"
287
288
  alignItems="Stretch"
288
289
  >
289
290
  <template:if test="{header>avatar}">