@sapui5/sap.fe.templates 1.106.0 → 1.108.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 (55) hide show
  1. package/package.json +3 -2
  2. package/src/sap/fe/templates/.library +1 -1
  3. package/src/sap/fe/templates/ListComponent.js +5 -1
  4. package/src/sap/fe/templates/ListComponent.ts +4 -0
  5. package/src/sap/fe/templates/ListReport/ExtensionAPI.js +43 -3
  6. package/src/sap/fe/templates/ListReport/ExtensionAPI.ts +38 -2
  7. package/src/sap/fe/templates/ListReport/ListReport.view.xml +12 -1
  8. package/src/sap/fe/templates/ListReport/ListReportController.controller.js +80 -22
  9. package/src/sap/fe/templates/ListReport/ListReportController.controller.ts +63 -14
  10. package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.js +30 -21
  11. package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.ts +21 -10
  12. package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.js +4 -7
  13. package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.ts +2 -6
  14. package/src/sap/fe/templates/ListReport/overrides/Share.js +9 -14
  15. package/src/sap/fe/templates/ListReport/overrides/Share.ts +8 -15
  16. package/src/sap/fe/templates/ListReport/overrides/ViewState.js +15 -11
  17. package/src/sap/fe/templates/ListReport/overrides/ViewState.ts +27 -9
  18. package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.js +3 -3
  19. package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.ts +2 -2
  20. package/src/sap/fe/templates/ListReport/view/fragments/Table.fragment.xml +0 -1
  21. package/src/sap/fe/templates/ObjectPage/ExtensionAPI.js +132 -3
  22. package/src/sap/fe/templates/ObjectPage/ExtensionAPI.ts +88 -1
  23. package/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +35 -47
  24. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +286 -45
  25. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.ts +209 -32
  26. package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.js +49 -7
  27. package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.ts +60 -5
  28. package/src/sap/fe/templates/ObjectPage/designtime/StashableHBox.designtime.js +1 -1
  29. package/src/sap/fe/templates/ObjectPage/designtime/StashableHBox.designtime.ts +1 -2
  30. package/src/sap/fe/templates/ObjectPage/designtime/StashableVBox.designtime.js +1 -1
  31. package/src/sap/fe/templates/ObjectPage/designtime/StashableVBox.designtime.ts +1 -2
  32. package/src/sap/fe/templates/ObjectPage/flexibility/ScrollableHeaderContainer.flexibility.js +33 -0
  33. package/src/sap/fe/templates/ObjectPage/flexibility/ScrollableHeaderContainer.flexibility.ts +23 -0
  34. package/src/sap/fe/templates/ObjectPage/manifest.json +8 -0
  35. package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.js +2 -2
  36. package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.ts +2 -1
  37. package/src/sap/fe/templates/ObjectPage/overrides/Share.js +10 -3
  38. package/src/sap/fe/templates/ObjectPage/overrides/Share.ts +8 -1
  39. package/src/sap/fe/templates/ObjectPage/overrides/ViewState.js +7 -1
  40. package/src/sap/fe/templates/ObjectPage/overrides/ViewState.ts +5 -0
  41. package/src/sap/fe/templates/ObjectPage/view/fragments/Actions.fragment.xml +8 -2
  42. package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderContent.fragment.xml +38 -23
  43. package/src/sap/fe/templates/ObjectPage/view/fragments/HeadingContent.fragment.xml +30 -0
  44. package/src/sap/fe/templates/ObjectPage/view/fragments/MacroChart.fragment.xml +1 -0
  45. package/src/sap/fe/templates/ObjectPage/view/fragments/Table.fragment.xml +1 -0
  46. package/src/sap/fe/templates/library.js +1 -1
  47. package/src/sap/fe/templates/messagebundle_lt.properties +1 -1
  48. package/src/sap/fe/templates/RootContainer/controller/Fcl.controller.js +0 -899
  49. package/src/sap/fe/templates/RootContainer/controller/Fcl.controller.ts +0 -830
  50. package/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.js +0 -207
  51. package/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.ts +0 -177
  52. package/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.js +0 -575
  53. package/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.ts +0 -492
  54. package/src/sap/fe/templates/RootContainer/view/Fcl.view.xml +0 -16
  55. package/src/sap/fe/templates/RootContainer/view/NavContainer.view.xml +0 -9
@@ -1,207 +0,0 @@
1
- /*!
2
- * SAP UI development toolkit for HTML5 (SAPUI5)
3
- * (c) Copyright 2009-2021 SAP SE. All rights reserved
4
- */
5
- sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controllerextensions/ViewState", "sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/KeepAliveHelper", "sap/m/Link", "sap/m/MessageBox", "sap/m/MessagePage", "./RootContainerBaseController"], function (Log, CommonUtils, ViewState, ClassSupport, KeepAliveHelper, Link, MessageBox, MessagePage, BaseController) {
6
- "use strict";
7
-
8
- var _dec, _dec2, _class, _class2, _descriptor;
9
-
10
- var Icon = MessageBox.Icon;
11
- var Action = MessageBox.Action;
12
- var usingExtension = ClassSupport.usingExtension;
13
- var defineUI5Class = ClassSupport.defineUI5Class;
14
-
15
- function _initializerDefineProperty(target, property, descriptor, context) { if (!descriptor) return; Object.defineProperty(target, property, { enumerable: descriptor.enumerable, configurable: descriptor.configurable, writable: descriptor.writable, value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 }); }
16
-
17
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
18
-
19
- function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
20
-
21
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
22
-
23
- function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }
24
-
25
- function _initializerWarningHelper(descriptor, context) { throw new Error('Decorating class property failed. Please ensure that ' + 'proposal-class-properties is enabled and runs after the decorators transform.'); }
26
-
27
- var NavContainerController = (_dec = defineUI5Class("sap.fe.templates.RootContainer.controller.NavContainer"), _dec2 = usingExtension(ViewState.override({
28
- applyInitialStateOnly: function () {
29
- return false;
30
- },
31
- adaptBindingRefreshControls: function (aControls) {
32
- var oView = this.getView(),
33
- oController = oView.getController();
34
- aControls.push(oController._getCurrentPage(oView));
35
- },
36
- adaptStateControls: function (aStateControls) {
37
- var oView = this.getView(),
38
- oController = oView.getController();
39
- aStateControls.push(oController._getCurrentPage(oView));
40
- },
41
- onRestore: function () {
42
- var oView = this.getView(),
43
- oNavContainer = oView.byId("appContent"),
44
- oController = oView.getController();
45
- var oInternalModel = oNavContainer.getModel("internal");
46
- var oPages = oInternalModel.getProperty("/pages");
47
-
48
- for (var sComponentId in oPages) {
49
- oInternalModel.setProperty("/pages/".concat(sComponentId, "/restoreStatus"), "pending");
50
- }
51
-
52
- oController.onContainerReady();
53
- },
54
- onSuspend: function () {
55
- var oView = this.getView(),
56
- oNavContainer = oView.byId("appContent");
57
- var aPages = oNavContainer.getPages();
58
- aPages.forEach(function (oPage) {
59
- var oTargetView = CommonUtils.getTargetView(oPage);
60
- var oController = oTargetView && oTargetView.getController();
61
-
62
- if (oController && oController.viewState && oController.viewState.onSuspend) {
63
- return oController.viewState.onSuspend();
64
- }
65
- });
66
- }
67
- })), _dec(_class = (_class2 = /*#__PURE__*/function (_BaseController) {
68
- _inheritsLoose(NavContainerController, _BaseController);
69
-
70
- function NavContainerController() {
71
- var _this;
72
-
73
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
74
- args[_key] = arguments[_key];
75
- }
76
-
77
- _this = _BaseController.call.apply(_BaseController, [this].concat(args)) || this;
78
-
79
- _initializerDefineProperty(_this, "viewState", _descriptor, _assertThisInitialized(_this));
80
-
81
- return _this;
82
- }
83
-
84
- var _proto = NavContainerController.prototype;
85
-
86
- _proto.onContainerReady = function onContainerReady() {
87
- // Restore views if neccessary.
88
- var oView = this.getView(),
89
- oPagePromise = this._getCurrentPage(oView);
90
-
91
- return oPagePromise.then(function (oCurrentPage) {
92
- var oTargetView = CommonUtils.getTargetView(oCurrentPage);
93
- return KeepAliveHelper.restoreView(oTargetView);
94
- });
95
- };
96
-
97
- _proto._getCurrentPage = function _getCurrentPage(oView) {
98
- return new Promise(function (resolve) {
99
- var oNavContainer = oView.byId("appContent");
100
- var oCurrentPage = oNavContainer.getCurrentPage();
101
-
102
- if (oCurrentPage && oCurrentPage.getController && oCurrentPage.getController().isPlaceholder && oCurrentPage.getController().isPlaceholder()) {
103
- oCurrentPage.getController().attachEventOnce("targetPageInsertedInContainer", function (oEvent) {
104
- var oTargetPage = oEvent.getParameter("targetpage");
105
- var oTargetView = CommonUtils.getTargetView(oTargetPage);
106
- resolve(oTargetView !== oView && oTargetView);
107
- });
108
- } else {
109
- var oTargetView = CommonUtils.getTargetView(oCurrentPage);
110
- resolve(oTargetView !== oView && oTargetView);
111
- }
112
- });
113
- }
114
- /**
115
- * @private
116
- * @name sap.fe.templates.RootContainer.controller.NavContainer.getMetadata
117
- * @function
118
- */
119
- ;
120
-
121
- _proto._getNavContainer = function _getNavContainer() {
122
- return this.getView().getContent()[0];
123
- }
124
- /**
125
- * Check if the FCL component is enabled.
126
- *
127
- * @function
128
- * @name sap.fe.templates.RootContainer.controller.NavContainer.controller#isFclEnabled
129
- * @memberof sap.fe.templates.RootContainer.controller.NavContainer.controller
130
- * @returns `false` since we are not in FCL scenario
131
- * @ui5-restricted
132
- * @final
133
- */
134
- ;
135
-
136
- _proto.isFclEnabled = function isFclEnabled() {
137
- return false;
138
- };
139
-
140
- _proto._scrollTablesToLastNavigatedItems = function _scrollTablesToLastNavigatedItems() {// Do nothing
141
- };
142
-
143
- _proto.displayMessagePage = function displayMessagePage(sErrorMessage, mParameters) {
144
- var _this2 = this;
145
-
146
- return new Promise(function (resolve, reject) {
147
- try {
148
- var oNavContainer = _this2._getNavContainer();
149
-
150
- if (!_this2.oMessagePage) {
151
- _this2.oMessagePage = new MessagePage({
152
- showHeader: false,
153
- icon: "sap-icon://message-error"
154
- });
155
- oNavContainer.addPage(_this2.oMessagePage);
156
- }
157
-
158
- _this2.oMessagePage.setText(sErrorMessage);
159
-
160
- if (mParameters.technicalMessage) {
161
- _this2.oMessagePage.setCustomDescription(new Link({
162
- text: mParameters.description || mParameters.technicalMessage,
163
- press: function () {
164
- MessageBox.show(mParameters.technicalMessage, {
165
- icon: Icon.ERROR,
166
- title: mParameters.title,
167
- actions: [Action.OK],
168
- defaultAction: Action.OK,
169
- details: mParameters.technicalDetails || "",
170
- contentWidth: "60%"
171
- });
172
- }
173
- }));
174
- } else {
175
- _this2.oMessagePage.setDescription(mParameters.description || "");
176
- }
177
-
178
- if (mParameters.handleShellBack) {
179
- var oErrorOriginPage = oNavContainer.getCurrentPage(),
180
- oAppComponent = CommonUtils.getAppComponent(oNavContainer.getCurrentPage());
181
- oAppComponent.getShellServices().setBackNavigation(function () {
182
- oNavContainer.to(oErrorOriginPage.getId());
183
- oAppComponent.getShellServices().setBackNavigation();
184
- });
185
- }
186
-
187
- oNavContainer.attachAfterNavigate(function () {
188
- resolve(true);
189
- });
190
- oNavContainer.to(_this2.oMessagePage.getId());
191
- } catch (e) {
192
- reject(false);
193
- Log.info(e);
194
- }
195
- });
196
- };
197
-
198
- return NavContainerController;
199
- }(BaseController), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, "viewState", [_dec2], {
200
- configurable: true,
201
- enumerable: true,
202
- writable: true,
203
- initializer: null
204
- })), _class2)) || _class);
205
- return NavContainerController;
206
- }, false);
207
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOYXZDb250YWluZXJDb250cm9sbGVyIiwiZGVmaW5lVUk1Q2xhc3MiLCJ1c2luZ0V4dGVuc2lvbiIsIlZpZXdTdGF0ZSIsIm92ZXJyaWRlIiwiYXBwbHlJbml0aWFsU3RhdGVPbmx5IiwiYWRhcHRCaW5kaW5nUmVmcmVzaENvbnRyb2xzIiwiYUNvbnRyb2xzIiwib1ZpZXciLCJnZXRWaWV3Iiwib0NvbnRyb2xsZXIiLCJnZXRDb250cm9sbGVyIiwicHVzaCIsIl9nZXRDdXJyZW50UGFnZSIsImFkYXB0U3RhdGVDb250cm9scyIsImFTdGF0ZUNvbnRyb2xzIiwib25SZXN0b3JlIiwib05hdkNvbnRhaW5lciIsImJ5SWQiLCJvSW50ZXJuYWxNb2RlbCIsImdldE1vZGVsIiwib1BhZ2VzIiwiZ2V0UHJvcGVydHkiLCJzQ29tcG9uZW50SWQiLCJzZXRQcm9wZXJ0eSIsIm9uQ29udGFpbmVyUmVhZHkiLCJvblN1c3BlbmQiLCJhUGFnZXMiLCJnZXRQYWdlcyIsImZvckVhY2giLCJvUGFnZSIsIm9UYXJnZXRWaWV3IiwiQ29tbW9uVXRpbHMiLCJnZXRUYXJnZXRWaWV3Iiwidmlld1N0YXRlIiwib1BhZ2VQcm9taXNlIiwidGhlbiIsIm9DdXJyZW50UGFnZSIsIktlZXBBbGl2ZUhlbHBlciIsInJlc3RvcmVWaWV3IiwiUHJvbWlzZSIsInJlc29sdmUiLCJnZXRDdXJyZW50UGFnZSIsImlzUGxhY2Vob2xkZXIiLCJhdHRhY2hFdmVudE9uY2UiLCJvRXZlbnQiLCJvVGFyZ2V0UGFnZSIsImdldFBhcmFtZXRlciIsIl9nZXROYXZDb250YWluZXIiLCJnZXRDb250ZW50IiwiaXNGY2xFbmFibGVkIiwiX3Njcm9sbFRhYmxlc1RvTGFzdE5hdmlnYXRlZEl0ZW1zIiwiZGlzcGxheU1lc3NhZ2VQYWdlIiwic0Vycm9yTWVzc2FnZSIsIm1QYXJhbWV0ZXJzIiwicmVqZWN0Iiwib01lc3NhZ2VQYWdlIiwiTWVzc2FnZVBhZ2UiLCJzaG93SGVhZGVyIiwiaWNvbiIsImFkZFBhZ2UiLCJzZXRUZXh0IiwidGVjaG5pY2FsTWVzc2FnZSIsInNldEN1c3RvbURlc2NyaXB0aW9uIiwiTGluayIsInRleHQiLCJkZXNjcmlwdGlvbiIsInByZXNzIiwiTWVzc2FnZUJveCIsInNob3ciLCJJY29uIiwiRVJST1IiLCJ0aXRsZSIsImFjdGlvbnMiLCJBY3Rpb24iLCJPSyIsImRlZmF1bHRBY3Rpb24iLCJkZXRhaWxzIiwidGVjaG5pY2FsRGV0YWlscyIsImNvbnRlbnRXaWR0aCIsInNldERlc2NyaXB0aW9uIiwiaGFuZGxlU2hlbGxCYWNrIiwib0Vycm9yT3JpZ2luUGFnZSIsIm9BcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJnZXRTaGVsbFNlcnZpY2VzIiwic2V0QmFja05hdmlnYXRpb24iLCJ0byIsImdldElkIiwiYXR0YWNoQWZ0ZXJOYXZpZ2F0ZSIsImUiLCJMb2ciLCJpbmZvIiwiQmFzZUNvbnRyb2xsZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIk5hdkNvbnRhaW5lci5jb250cm9sbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IFZpZXdTdGF0ZSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvVmlld1N0YXRlXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgdXNpbmdFeHRlbnNpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBLZWVwQWxpdmVIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvS2VlcEFsaXZlSGVscGVyXCI7XG5pbXBvcnQgTGluayBmcm9tIFwic2FwL20vTGlua1wiO1xuaW1wb3J0IE1lc3NhZ2VCb3gsIHsgQWN0aW9uLCBJY29uIH0gZnJvbSBcInNhcC9tL01lc3NhZ2VCb3hcIjtcbmltcG9ydCBNZXNzYWdlUGFnZSBmcm9tIFwic2FwL20vTWVzc2FnZVBhZ2VcIjtcbmltcG9ydCB0eXBlIE5hdkNvbnRhaW5lciBmcm9tIFwic2FwL20vTmF2Q29udGFpbmVyXCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IEJhc2VDb250cm9sbGVyIGZyb20gXCIuL1Jvb3RDb250YWluZXJCYXNlQ29udHJvbGxlclwiO1xuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIuY29udHJvbGxlci5OYXZDb250YWluZXJcIilcbmNsYXNzIE5hdkNvbnRhaW5lckNvbnRyb2xsZXIgZXh0ZW5kcyBCYXNlQ29udHJvbGxlciB7XG5cdEB1c2luZ0V4dGVuc2lvbihcblx0XHRWaWV3U3RhdGUub3ZlcnJpZGUoe1xuXHRcdFx0YXBwbHlJbml0aWFsU3RhdGVPbmx5OiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH0sXG5cdFx0XHRhZGFwdEJpbmRpbmdSZWZyZXNoQ29udHJvbHM6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUsIGFDb250cm9sczogYW55KSB7XG5cdFx0XHRcdGNvbnN0IG9WaWV3ID0gdGhpcy5nZXRWaWV3KCksXG5cdFx0XHRcdFx0b0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCkgYXMgTmF2Q29udGFpbmVyQ29udHJvbGxlcjtcblx0XHRcdFx0YUNvbnRyb2xzLnB1c2gob0NvbnRyb2xsZXIuX2dldEN1cnJlbnRQYWdlKG9WaWV3KSk7XG5cdFx0XHR9LFxuXHRcdFx0YWRhcHRTdGF0ZUNvbnRyb2xzOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlLCBhU3RhdGVDb250cm9sczogYW55KSB7XG5cdFx0XHRcdGNvbnN0IG9WaWV3ID0gdGhpcy5nZXRWaWV3KCksXG5cdFx0XHRcdFx0b0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCkgYXMgTmF2Q29udGFpbmVyQ29udHJvbGxlcjtcblx0XHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvQ29udHJvbGxlci5fZ2V0Q3VycmVudFBhZ2Uob1ZpZXcpKTtcblx0XHRcdH0sXG5cdFx0XHRvblJlc3RvcmU6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUpIHtcblx0XHRcdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdFx0XHRvTmF2Q29udGFpbmVyID0gb1ZpZXcuYnlJZChcImFwcENvbnRlbnRcIiksXG5cdFx0XHRcdFx0b0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCkgYXMgTmF2Q29udGFpbmVyQ29udHJvbGxlcjtcblx0XHRcdFx0Y29uc3Qgb0ludGVybmFsTW9kZWwgPSBvTmF2Q29udGFpbmVyLmdldE1vZGVsKFwiaW50ZXJuYWxcIikgYXMgSlNPTk1vZGVsO1xuXHRcdFx0XHRjb25zdCBvUGFnZXMgPSBvSW50ZXJuYWxNb2RlbC5nZXRQcm9wZXJ0eShcIi9wYWdlc1wiKTtcblxuXHRcdFx0XHRmb3IgKGNvbnN0IHNDb21wb25lbnRJZCBpbiBvUGFnZXMpIHtcblx0XHRcdFx0XHRvSW50ZXJuYWxNb2RlbC5zZXRQcm9wZXJ0eShgL3BhZ2VzLyR7c0NvbXBvbmVudElkfS9yZXN0b3JlU3RhdHVzYCwgXCJwZW5kaW5nXCIpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG9Db250cm9sbGVyLm9uQ29udGFpbmVyUmVhZHkoKTtcblx0XHRcdH0sXG5cdFx0XHRvblN1c3BlbmQ6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUpIHtcblx0XHRcdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdFx0XHRvTmF2Q29udGFpbmVyID0gb1ZpZXcuYnlJZChcImFwcENvbnRlbnRcIikgYXMgTmF2Q29udGFpbmVyO1xuXHRcdFx0XHRjb25zdCBhUGFnZXMgPSBvTmF2Q29udGFpbmVyLmdldFBhZ2VzKCk7XG5cdFx0XHRcdGFQYWdlcy5mb3JFYWNoKGZ1bmN0aW9uIChvUGFnZTogYW55KSB7XG5cdFx0XHRcdFx0Y29uc3Qgb1RhcmdldFZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KG9QYWdlKTtcblxuXHRcdFx0XHRcdGNvbnN0IG9Db250cm9sbGVyID0gb1RhcmdldFZpZXcgJiYgb1RhcmdldFZpZXcuZ2V0Q29udHJvbGxlcigpO1xuXHRcdFx0XHRcdGlmIChvQ29udHJvbGxlciAmJiBvQ29udHJvbGxlci52aWV3U3RhdGUgJiYgb0NvbnRyb2xsZXIudmlld1N0YXRlLm9uU3VzcGVuZCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIG9Db250cm9sbGVyLnZpZXdTdGF0ZS5vblN1c3BlbmQoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0pXG5cdClcblx0dmlld1N0YXRlITogVmlld1N0YXRlO1xuXHRwcml2YXRlIG9NZXNzYWdlUGFnZT86IE1lc3NhZ2VQYWdlO1xuXG5cdG9uQ29udGFpbmVyUmVhZHkoKSB7XG5cdFx0Ly8gUmVzdG9yZSB2aWV3cyBpZiBuZWNjZXNzYXJ5LlxuXHRcdGNvbnN0IG9WaWV3ID0gdGhpcy5nZXRWaWV3KCksXG5cdFx0XHRvUGFnZVByb21pc2UgPSB0aGlzLl9nZXRDdXJyZW50UGFnZShvVmlldyk7XG5cblx0XHRyZXR1cm4gb1BhZ2VQcm9taXNlLnRoZW4oZnVuY3Rpb24gKG9DdXJyZW50UGFnZTogYW55KSB7XG5cdFx0XHRjb25zdCBvVGFyZ2V0VmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcob0N1cnJlbnRQYWdlKTtcblx0XHRcdHJldHVybiBLZWVwQWxpdmVIZWxwZXIucmVzdG9yZVZpZXcob1RhcmdldFZpZXcpO1xuXHRcdH0pO1xuXHR9XG5cblx0X2dldEN1cnJlbnRQYWdlKG9WaWV3OiBhbnkpIHtcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmU6ICh2YWx1ZTogYW55KSA9PiB2b2lkKSB7XG5cdFx0XHRjb25zdCBvTmF2Q29udGFpbmVyID0gb1ZpZXcuYnlJZChcImFwcENvbnRlbnRcIik7XG5cdFx0XHRjb25zdCBvQ3VycmVudFBhZ2UgPSBvTmF2Q29udGFpbmVyLmdldEN1cnJlbnRQYWdlKCk7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdG9DdXJyZW50UGFnZSAmJlxuXHRcdFx0XHRvQ3VycmVudFBhZ2UuZ2V0Q29udHJvbGxlciAmJlxuXHRcdFx0XHRvQ3VycmVudFBhZ2UuZ2V0Q29udHJvbGxlcigpLmlzUGxhY2Vob2xkZXIgJiZcblx0XHRcdFx0b0N1cnJlbnRQYWdlLmdldENvbnRyb2xsZXIoKS5pc1BsYWNlaG9sZGVyKClcblx0XHRcdCkge1xuXHRcdFx0XHRvQ3VycmVudFBhZ2UuZ2V0Q29udHJvbGxlcigpLmF0dGFjaEV2ZW50T25jZShcInRhcmdldFBhZ2VJbnNlcnRlZEluQ29udGFpbmVyXCIsIGZ1bmN0aW9uIChvRXZlbnQ6IGFueSkge1xuXHRcdFx0XHRcdGNvbnN0IG9UYXJnZXRQYWdlID0gb0V2ZW50LmdldFBhcmFtZXRlcihcInRhcmdldHBhZ2VcIik7XG5cdFx0XHRcdFx0Y29uc3Qgb1RhcmdldFZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KG9UYXJnZXRQYWdlKTtcblx0XHRcdFx0XHRyZXNvbHZlKG9UYXJnZXRWaWV3ICE9PSBvVmlldyAmJiBvVGFyZ2V0Vmlldyk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3Qgb1RhcmdldFZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KG9DdXJyZW50UGFnZSk7XG5cdFx0XHRcdHJlc29sdmUob1RhcmdldFZpZXcgIT09IG9WaWV3ICYmIG9UYXJnZXRWaWV3KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAbmFtZSBzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIuY29udHJvbGxlci5OYXZDb250YWluZXIuZ2V0TWV0YWRhdGFcblx0ICogQGZ1bmN0aW9uXG5cdCAqL1xuXG5cdF9nZXROYXZDb250YWluZXIoKSB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0VmlldygpLmdldENvbnRlbnQoKVswXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVjayBpZiB0aGUgRkNMIGNvbXBvbmVudCBpcyBlbmFibGVkLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgc2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLmNvbnRyb2xsZXIuTmF2Q29udGFpbmVyLmNvbnRyb2xsZXIjaXNGY2xFbmFibGVkXG5cdCAqIEBtZW1iZXJvZiBzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIuY29udHJvbGxlci5OYXZDb250YWluZXIuY29udHJvbGxlclxuXHQgKiBAcmV0dXJucyBgZmFsc2VgIHNpbmNlIHdlIGFyZSBub3QgaW4gRkNMIHNjZW5hcmlvXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiBAZmluYWxcblx0ICovXG5cdGlzRmNsRW5hYmxlZCgpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRfc2Nyb2xsVGFibGVzVG9MYXN0TmF2aWdhdGVkSXRlbXMoKSB7XG5cdFx0Ly8gRG8gbm90aGluZ1xuXHR9XG5cblx0ZGlzcGxheU1lc3NhZ2VQYWdlKHNFcnJvck1lc3NhZ2U6IGFueSwgbVBhcmFtZXRlcnM6IGFueSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogYW55LCByZWplY3Q6IGFueSkgPT4ge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3Qgb05hdkNvbnRhaW5lciA9IHRoaXMuX2dldE5hdkNvbnRhaW5lcigpIGFzIE5hdkNvbnRhaW5lcjtcblxuXHRcdFx0XHRpZiAoIXRoaXMub01lc3NhZ2VQYWdlKSB7XG5cdFx0XHRcdFx0dGhpcy5vTWVzc2FnZVBhZ2UgPSBuZXcgTWVzc2FnZVBhZ2Uoe1xuXHRcdFx0XHRcdFx0c2hvd0hlYWRlcjogZmFsc2UsXG5cdFx0XHRcdFx0XHRpY29uOiBcInNhcC1pY29uOi8vbWVzc2FnZS1lcnJvclwiXG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRvTmF2Q29udGFpbmVyLmFkZFBhZ2UodGhpcy5vTWVzc2FnZVBhZ2UpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dGhpcy5vTWVzc2FnZVBhZ2Uuc2V0VGV4dChzRXJyb3JNZXNzYWdlKTtcblxuXHRcdFx0XHRpZiAobVBhcmFtZXRlcnMudGVjaG5pY2FsTWVzc2FnZSkge1xuXHRcdFx0XHRcdHRoaXMub01lc3NhZ2VQYWdlLnNldEN1c3RvbURlc2NyaXB0aW9uKFxuXHRcdFx0XHRcdFx0bmV3IExpbmsoe1xuXHRcdFx0XHRcdFx0XHR0ZXh0OiBtUGFyYW1ldGVycy5kZXNjcmlwdGlvbiB8fCBtUGFyYW1ldGVycy50ZWNobmljYWxNZXNzYWdlLFxuXHRcdFx0XHRcdFx0XHRwcmVzczogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRcdE1lc3NhZ2VCb3guc2hvdyhtUGFyYW1ldGVycy50ZWNobmljYWxNZXNzYWdlLCB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpY29uOiBJY29uLkVSUk9SLFxuXHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6IG1QYXJhbWV0ZXJzLnRpdGxlLFxuXHRcdFx0XHRcdFx0XHRcdFx0YWN0aW9uczogW0FjdGlvbi5PS10sXG5cdFx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0QWN0aW9uOiBBY3Rpb24uT0ssXG5cdFx0XHRcdFx0XHRcdFx0XHRkZXRhaWxzOiBtUGFyYW1ldGVycy50ZWNobmljYWxEZXRhaWxzIHx8IFwiXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRjb250ZW50V2lkdGg6IFwiNjAlXCJcblx0XHRcdFx0XHRcdFx0XHR9IGFzIGFueSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0aGlzLm9NZXNzYWdlUGFnZS5zZXREZXNjcmlwdGlvbihtUGFyYW1ldGVycy5kZXNjcmlwdGlvbiB8fCBcIlwiKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChtUGFyYW1ldGVycy5oYW5kbGVTaGVsbEJhY2spIHtcblx0XHRcdFx0XHRjb25zdCBvRXJyb3JPcmlnaW5QYWdlID0gb05hdkNvbnRhaW5lci5nZXRDdXJyZW50UGFnZSgpLFxuXHRcdFx0XHRcdFx0b0FwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudChvTmF2Q29udGFpbmVyLmdldEN1cnJlbnRQYWdlKCkpO1xuXHRcdFx0XHRcdG9BcHBDb21wb25lbnQuZ2V0U2hlbGxTZXJ2aWNlcygpLnNldEJhY2tOYXZpZ2F0aW9uKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdChvTmF2Q29udGFpbmVyIGFzIGFueSkudG8ob0Vycm9yT3JpZ2luUGFnZS5nZXRJZCgpKTtcblx0XHRcdFx0XHRcdG9BcHBDb21wb25lbnQuZ2V0U2hlbGxTZXJ2aWNlcygpLnNldEJhY2tOYXZpZ2F0aW9uKCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0b05hdkNvbnRhaW5lci5hdHRhY2hBZnRlck5hdmlnYXRlKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRyZXNvbHZlKHRydWUpO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0KG9OYXZDb250YWluZXIgYXMgYW55KS50byh0aGlzLm9NZXNzYWdlUGFnZS5nZXRJZCgpKTtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0cmVqZWN0KGZhbHNlKTtcblx0XHRcdFx0TG9nLmluZm8oZSBhcyBhbnkpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE5hdkNvbnRhaW5lckNvbnRyb2xsZXI7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BYU1BLHNCLFdBRExDLGNBQWMsQ0FBQyx3REFBRCxDLFVBRWJDLGNBQWMsQ0FDZEMsU0FBUyxDQUFDQyxRQUFWLENBQW1CO0lB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
@@ -1,177 +0,0 @@
1
- import Log from "sap/base/Log";
2
- import CommonUtils from "sap/fe/core/CommonUtils";
3
- import ViewState from "sap/fe/core/controllerextensions/ViewState";
4
- import { defineUI5Class, usingExtension } from "sap/fe/core/helpers/ClassSupport";
5
- import KeepAliveHelper from "sap/fe/core/helpers/KeepAliveHelper";
6
- import Link from "sap/m/Link";
7
- import MessageBox, { Action, Icon } from "sap/m/MessageBox";
8
- import MessagePage from "sap/m/MessagePage";
9
- import type NavContainer from "sap/m/NavContainer";
10
- import type JSONModel from "sap/ui/model/json/JSONModel";
11
- import BaseController from "./RootContainerBaseController";
12
-
13
- @defineUI5Class("sap.fe.templates.RootContainer.controller.NavContainer")
14
- class NavContainerController extends BaseController {
15
- @usingExtension(
16
- ViewState.override({
17
- applyInitialStateOnly: function () {
18
- return false;
19
- },
20
- adaptBindingRefreshControls: function (this: ViewState, aControls: any) {
21
- const oView = this.getView(),
22
- oController = oView.getController() as NavContainerController;
23
- aControls.push(oController._getCurrentPage(oView));
24
- },
25
- adaptStateControls: function (this: ViewState, aStateControls: any) {
26
- const oView = this.getView(),
27
- oController = oView.getController() as NavContainerController;
28
- aStateControls.push(oController._getCurrentPage(oView));
29
- },
30
- onRestore: function (this: ViewState) {
31
- const oView = this.getView(),
32
- oNavContainer = oView.byId("appContent"),
33
- oController = oView.getController() as NavContainerController;
34
- const oInternalModel = oNavContainer.getModel("internal") as JSONModel;
35
- const oPages = oInternalModel.getProperty("/pages");
36
-
37
- for (const sComponentId in oPages) {
38
- oInternalModel.setProperty(`/pages/${sComponentId}/restoreStatus`, "pending");
39
- }
40
- oController.onContainerReady();
41
- },
42
- onSuspend: function (this: ViewState) {
43
- const oView = this.getView(),
44
- oNavContainer = oView.byId("appContent") as NavContainer;
45
- const aPages = oNavContainer.getPages();
46
- aPages.forEach(function (oPage: any) {
47
- const oTargetView = CommonUtils.getTargetView(oPage);
48
-
49
- const oController = oTargetView && oTargetView.getController();
50
- if (oController && oController.viewState && oController.viewState.onSuspend) {
51
- return oController.viewState.onSuspend();
52
- }
53
- });
54
- }
55
- })
56
- )
57
- viewState!: ViewState;
58
- private oMessagePage?: MessagePage;
59
-
60
- onContainerReady() {
61
- // Restore views if neccessary.
62
- const oView = this.getView(),
63
- oPagePromise = this._getCurrentPage(oView);
64
-
65
- return oPagePromise.then(function (oCurrentPage: any) {
66
- const oTargetView = CommonUtils.getTargetView(oCurrentPage);
67
- return KeepAliveHelper.restoreView(oTargetView);
68
- });
69
- }
70
-
71
- _getCurrentPage(oView: any) {
72
- return new Promise(function (resolve: (value: any) => void) {
73
- const oNavContainer = oView.byId("appContent");
74
- const oCurrentPage = oNavContainer.getCurrentPage();
75
- if (
76
- oCurrentPage &&
77
- oCurrentPage.getController &&
78
- oCurrentPage.getController().isPlaceholder &&
79
- oCurrentPage.getController().isPlaceholder()
80
- ) {
81
- oCurrentPage.getController().attachEventOnce("targetPageInsertedInContainer", function (oEvent: any) {
82
- const oTargetPage = oEvent.getParameter("targetpage");
83
- const oTargetView = CommonUtils.getTargetView(oTargetPage);
84
- resolve(oTargetView !== oView && oTargetView);
85
- });
86
- } else {
87
- const oTargetView = CommonUtils.getTargetView(oCurrentPage);
88
- resolve(oTargetView !== oView && oTargetView);
89
- }
90
- });
91
- }
92
-
93
- /**
94
- * @private
95
- * @name sap.fe.templates.RootContainer.controller.NavContainer.getMetadata
96
- * @function
97
- */
98
-
99
- _getNavContainer() {
100
- return this.getView().getContent()[0];
101
- }
102
-
103
- /**
104
- * Check if the FCL component is enabled.
105
- *
106
- * @function
107
- * @name sap.fe.templates.RootContainer.controller.NavContainer.controller#isFclEnabled
108
- * @memberof sap.fe.templates.RootContainer.controller.NavContainer.controller
109
- * @returns `false` since we are not in FCL scenario
110
- * @ui5-restricted
111
- * @final
112
- */
113
- isFclEnabled() {
114
- return false;
115
- }
116
-
117
- _scrollTablesToLastNavigatedItems() {
118
- // Do nothing
119
- }
120
-
121
- displayMessagePage(sErrorMessage: any, mParameters: any): Promise<boolean> {
122
- return new Promise((resolve: any, reject: any) => {
123
- try {
124
- const oNavContainer = this._getNavContainer() as NavContainer;
125
-
126
- if (!this.oMessagePage) {
127
- this.oMessagePage = new MessagePage({
128
- showHeader: false,
129
- icon: "sap-icon://message-error"
130
- });
131
-
132
- oNavContainer.addPage(this.oMessagePage);
133
- }
134
-
135
- this.oMessagePage.setText(sErrorMessage);
136
-
137
- if (mParameters.technicalMessage) {
138
- this.oMessagePage.setCustomDescription(
139
- new Link({
140
- text: mParameters.description || mParameters.technicalMessage,
141
- press: function () {
142
- MessageBox.show(mParameters.technicalMessage, {
143
- icon: Icon.ERROR,
144
- title: mParameters.title,
145
- actions: [Action.OK],
146
- defaultAction: Action.OK,
147
- details: mParameters.technicalDetails || "",
148
- contentWidth: "60%"
149
- } as any);
150
- }
151
- })
152
- );
153
- } else {
154
- this.oMessagePage.setDescription(mParameters.description || "");
155
- }
156
-
157
- if (mParameters.handleShellBack) {
158
- const oErrorOriginPage = oNavContainer.getCurrentPage(),
159
- oAppComponent = CommonUtils.getAppComponent(oNavContainer.getCurrentPage());
160
- oAppComponent.getShellServices().setBackNavigation(function () {
161
- (oNavContainer as any).to(oErrorOriginPage.getId());
162
- oAppComponent.getShellServices().setBackNavigation();
163
- });
164
- }
165
- oNavContainer.attachAfterNavigate(function () {
166
- resolve(true);
167
- });
168
- (oNavContainer as any).to(this.oMessagePage.getId());
169
- } catch (e) {
170
- reject(false);
171
- Log.info(e as any);
172
- }
173
- });
174
- }
175
- }
176
-
177
- export default NavContainerController;