@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.
- package/package.json +3 -2
- package/src/sap/fe/templates/.library +1 -1
- package/src/sap/fe/templates/ListComponent.js +5 -1
- package/src/sap/fe/templates/ListComponent.ts +4 -0
- package/src/sap/fe/templates/ListReport/ExtensionAPI.js +43 -3
- package/src/sap/fe/templates/ListReport/ExtensionAPI.ts +38 -2
- package/src/sap/fe/templates/ListReport/ListReport.view.xml +12 -1
- package/src/sap/fe/templates/ListReport/ListReportController.controller.js +80 -22
- package/src/sap/fe/templates/ListReport/ListReportController.controller.ts +63 -14
- package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.js +30 -21
- package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.ts +21 -10
- package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.js +4 -7
- package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.ts +2 -6
- package/src/sap/fe/templates/ListReport/overrides/Share.js +9 -14
- package/src/sap/fe/templates/ListReport/overrides/Share.ts +8 -15
- package/src/sap/fe/templates/ListReport/overrides/ViewState.js +15 -11
- package/src/sap/fe/templates/ListReport/overrides/ViewState.ts +27 -9
- package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.js +3 -3
- package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.ts +2 -2
- package/src/sap/fe/templates/ListReport/view/fragments/Table.fragment.xml +0 -1
- package/src/sap/fe/templates/ObjectPage/ExtensionAPI.js +132 -3
- package/src/sap/fe/templates/ObjectPage/ExtensionAPI.ts +88 -1
- package/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +35 -47
- package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +286 -45
- package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.ts +209 -32
- package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.js +49 -7
- package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.ts +60 -5
- package/src/sap/fe/templates/ObjectPage/designtime/StashableHBox.designtime.js +1 -1
- package/src/sap/fe/templates/ObjectPage/designtime/StashableHBox.designtime.ts +1 -2
- package/src/sap/fe/templates/ObjectPage/designtime/StashableVBox.designtime.js +1 -1
- package/src/sap/fe/templates/ObjectPage/designtime/StashableVBox.designtime.ts +1 -2
- package/src/sap/fe/templates/ObjectPage/flexibility/ScrollableHeaderContainer.flexibility.js +33 -0
- package/src/sap/fe/templates/ObjectPage/flexibility/ScrollableHeaderContainer.flexibility.ts +23 -0
- package/src/sap/fe/templates/ObjectPage/manifest.json +8 -0
- package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.js +2 -2
- package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.ts +2 -1
- package/src/sap/fe/templates/ObjectPage/overrides/Share.js +10 -3
- package/src/sap/fe/templates/ObjectPage/overrides/Share.ts +8 -1
- package/src/sap/fe/templates/ObjectPage/overrides/ViewState.js +7 -1
- package/src/sap/fe/templates/ObjectPage/overrides/ViewState.ts +5 -0
- package/src/sap/fe/templates/ObjectPage/view/fragments/Actions.fragment.xml +8 -2
- package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderContent.fragment.xml +38 -23
- package/src/sap/fe/templates/ObjectPage/view/fragments/HeadingContent.fragment.xml +30 -0
- package/src/sap/fe/templates/ObjectPage/view/fragments/MacroChart.fragment.xml +1 -0
- package/src/sap/fe/templates/ObjectPage/view/fragments/Table.fragment.xml +1 -0
- package/src/sap/fe/templates/library.js +1 -1
- package/src/sap/fe/templates/messagebundle_lt.properties +1 -1
- package/src/sap/fe/templates/RootContainer/controller/Fcl.controller.js +0 -899
- package/src/sap/fe/templates/RootContainer/controller/Fcl.controller.ts +0 -830
- package/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.js +0 -207
- package/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.ts +0 -177
- package/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.js +0 -575
- package/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.ts +0 -492
- package/src/sap/fe/templates/RootContainer/view/Fcl.view.xml +0 -16
- 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;
|