@openui5/sap.ui.documentation 1.112.2 → 1.114.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 (76) hide show
  1. package/THIRDPARTY.txt +1 -1
  2. package/package.json +7 -7
  3. package/src/sap/ui/documentation/.library +1 -1
  4. package/src/sap/ui/documentation/library.js +2 -2
  5. package/src/sap/ui/documentation/messagebundle.properties +6 -0
  6. package/src/sap/ui/documentation/messagebundle_ar.properties +2 -0
  7. package/src/sap/ui/documentation/messagebundle_bg.properties +2 -0
  8. package/src/sap/ui/documentation/messagebundle_ca.properties +2 -0
  9. package/src/sap/ui/documentation/messagebundle_cs.properties +2 -0
  10. package/src/sap/ui/documentation/messagebundle_cy.properties +2 -0
  11. package/src/sap/ui/documentation/messagebundle_da.properties +2 -0
  12. package/src/sap/ui/documentation/messagebundle_de.properties +2 -0
  13. package/src/sap/ui/documentation/messagebundle_el.properties +2 -0
  14. package/src/sap/ui/documentation/messagebundle_en_US_saprigi.properties +2 -0
  15. package/src/sap/ui/documentation/messagebundle_es.properties +2 -0
  16. package/src/sap/ui/documentation/messagebundle_es_MX.properties +2 -0
  17. package/src/sap/ui/documentation/messagebundle_et.properties +2 -0
  18. package/src/sap/ui/documentation/messagebundle_fi.properties +2 -0
  19. package/src/sap/ui/documentation/messagebundle_fr.properties +2 -0
  20. package/src/sap/ui/documentation/messagebundle_fr_CA.properties +2 -0
  21. package/src/sap/ui/documentation/messagebundle_hi.properties +2 -0
  22. package/src/sap/ui/documentation/messagebundle_hr.properties +2 -0
  23. package/src/sap/ui/documentation/messagebundle_hu.properties +2 -0
  24. package/src/sap/ui/documentation/messagebundle_id.properties +2 -0
  25. package/src/sap/ui/documentation/messagebundle_it.properties +2 -0
  26. package/src/sap/ui/documentation/messagebundle_iw.properties +2 -0
  27. package/src/sap/ui/documentation/messagebundle_ja.properties +2 -0
  28. package/src/sap/ui/documentation/messagebundle_kk.properties +2 -0
  29. package/src/sap/ui/documentation/messagebundle_ko.properties +2 -0
  30. package/src/sap/ui/documentation/messagebundle_lt.properties +2 -0
  31. package/src/sap/ui/documentation/messagebundle_lv.properties +2 -0
  32. package/src/sap/ui/documentation/messagebundle_ms.properties +2 -0
  33. package/src/sap/ui/documentation/messagebundle_nl.properties +2 -0
  34. package/src/sap/ui/documentation/messagebundle_no.properties +2 -0
  35. package/src/sap/ui/documentation/messagebundle_pl.properties +2 -0
  36. package/src/sap/ui/documentation/messagebundle_pt.properties +2 -0
  37. package/src/sap/ui/documentation/messagebundle_pt_PT.properties +2 -0
  38. package/src/sap/ui/documentation/messagebundle_ro.properties +2 -0
  39. package/src/sap/ui/documentation/messagebundle_ru.properties +2 -0
  40. package/src/sap/ui/documentation/messagebundle_sh.properties +2 -0
  41. package/src/sap/ui/documentation/messagebundle_sk.properties +2 -0
  42. package/src/sap/ui/documentation/messagebundle_sl.properties +2 -0
  43. package/src/sap/ui/documentation/messagebundle_sv.properties +2 -0
  44. package/src/sap/ui/documentation/messagebundle_th.properties +2 -0
  45. package/src/sap/ui/documentation/messagebundle_tr.properties +2 -0
  46. package/src/sap/ui/documentation/messagebundle_uk.properties +2 -0
  47. package/src/sap/ui/documentation/messagebundle_vi.properties +2 -0
  48. package/src/sap/ui/documentation/messagebundle_zh_CN.properties +2 -0
  49. package/src/sap/ui/documentation/messagebundle_zh_TW.properties +2 -0
  50. package/src/sap/ui/documentation/sdk/Component.js +1 -1
  51. package/src/sap/ui/documentation/sdk/controller/App.controller.js +5 -6
  52. package/src/sap/ui/documentation/sdk/controller/BaseController.js +25 -1
  53. package/src/sap/ui/documentation/sdk/controller/SampleBaseController.js +27 -2
  54. package/src/sap/ui/documentation/sdk/controller/Tools.controller.js +2 -2
  55. package/src/sap/ui/documentation/sdk/controller/VersionNotFound.controller.js +12 -14
  56. package/src/sap/ui/documentation/sdk/controller/util/Highlighter.js +1 -1
  57. package/src/sap/ui/documentation/sdk/controller/util/ToolsInfo.js +6 -0
  58. package/src/sap/ui/documentation/sdk/css/style.css +22 -11
  59. package/src/sap/ui/documentation/sdk/images/tools/UI5TestRecorder.png +0 -0
  60. package/src/sap/ui/documentation/sdk/index.js +31 -30
  61. package/src/sap/ui/documentation/sdk/tmpl/package.json.tmpl +1 -1
  62. package/src/sap/ui/documentation/sdk/tmpl/ui5.yaml.tmpl +1 -1
  63. package/src/sap/ui/documentation/sdk/util/DocumentationRouter.js +18 -3
  64. package/src/sap/ui/documentation/sdk/view/ApiDetailInitial.view.xml +1 -4
  65. package/src/sap/ui/documentation/sdk/view/ApiMaster.view.xml +23 -14
  66. package/src/sap/ui/documentation/sdk/view/Controls.view.xml +2 -5
  67. package/src/sap/ui/documentation/sdk/view/ControlsMaster.view.xml +39 -30
  68. package/src/sap/ui/documentation/sdk/view/DemoApps.view.xml +3 -7
  69. package/src/sap/ui/documentation/sdk/view/Footer.fragment.xml +5 -8
  70. package/src/sap/ui/documentation/sdk/view/FooterMaster.fragment.xml +11 -0
  71. package/src/sap/ui/documentation/sdk/view/Tools.view.xml +27 -5
  72. package/src/sap/ui/documentation/sdk/view/TopicDetailInitial.view.xml +1 -5
  73. package/src/sap/ui/documentation/sdk/view/TopicMaster.view.xml +21 -14
  74. package/src/sap/ui/documentation/sdk/view/VersionNotFound.view.xml +1 -1
  75. package/src/sap/ui/documentation/sdk/view/Welcome.view.xml +1 -5
  76. package/src/sap/ui/documentation/themes/base/Documentation.less +4 -0
@@ -388,6 +388,8 @@ TOOLS_CARD_14_TEXT=\u7075\u6D3B\u7684\u7F16\u7A0B\u6A21\u578B\u4FBF\u4E8E\u60A8\
388
388
  TOOLS_CARD_14_IMG_ALT=\u56FE\u7247\u663E\u793A\u4E86\u7075\u6D3B\u7F16\u7A0B\u6A21\u578B\u6D4F\u89C8\u5668
389
389
  TOOLS_CARD_15_TEXT=\u8F85\u52A9\u529F\u80FD\u6307\u5357\u63D0\u4F9B\u4E86\u6709\u5173 web \u8F85\u52A9\u529F\u80FD\u7684\u6DF1\u5165\u4FE1\u606F\u53CA\u793A\u4F8B\uFF0C\u65E0\u8BBA\u60A8\u662F\u63A7\u4EF6\u6216\u5E94\u7528\u7A0B\u5E8F\u5F00\u53D1\u4EBA\u5458\u8FD8\u662F\u4E1A\u52A1\u7528\u6237\uFF0C\u90FD\u53EF\u4EE5\u901A\u8FC7\u641C\u7D22\u4E86\u89E3\u6709\u5173 SAPUI5 \u8303\u56F4\u5185 web \u8F85\u52A9\u529F\u80FD\u7684\u66F4\u591A\u4FE1\u606F\u3002
390
390
  TOOLS_CARD_15_IMG_ALT=\u56FE\u7247\u663E\u793A\u4E86\u8F85\u52A9\u529F\u80FD\u6307\u5357
391
+ TOOLS_CARD_16_TEXT=\u501F\u52A9 UI5 \u6D4B\u8BD5\u5F55\u5236\u5668\u8FD9\u4E00\u5DE5\u5177\uFF0C\u53EF\u4EE5\u901A\u8FC7\u5728\u6D4F\u89C8\u5668\u4E2D\u5F55\u5236\u64CD\u4F5C\u6765\u521B\u5EFA UI5 \u96C6\u6210\u6D4B\u8BD5\u3002
392
+ TOOLS_CARD_16_IMG_ALT=\u56FE\u7247\u663E\u793A\u4E86 UI5 \u6D4B\u8BD5\u5F55\u5236\u5668
391
393
  API_MASTER_PLACEHOLDER=\u8FC7\u6EE4\u5668
392
394
  API_MASTER_EXPAND_BTN_TOOLTIP=\u5168\u90E8\u5C55\u5F00
393
395
  API_MASTER_COLLAPSE_BTN_TOOLTIP=\u5168\u90E8\u6298\u53E0
@@ -388,6 +388,8 @@ TOOLS_CARD_14_TEXT=\u4F7F\u7528 SAP Fiori \u5143\u7D20 (\u9069\u7528\u65BC OData
388
388
  TOOLS_CARD_14_IMG_ALT=\u7528\u65BC\u986F\u793A\u5F48\u6027\u7A0B\u5F0F\u8A2D\u8A08\u6A21\u578B\u700F\u89BD\u5668\u7684\u5716\u7247
389
389
  TOOLS_CARD_15_TEXT=\u7121\u8AD6\u60A8\u662F\u63A7\u5236\u4EBA\u54E1\u3001\u61C9\u7528\u7A0B\u5F0F\u958B\u767C\u4EBA\u54E1\uFF0C\u6216\u662F\u5728 SAPUI5 \u5340\u57DF\u4E2D\u641C\u5C0B\u4EE5\u77AD\u89E3\u7DB2\u8DEF\u53EF\u5B58\u53D6\u6027\u76F8\u95DC\u8CC7\u8A0A\u7684\u4F01\u696D\u4F7F\u7528\u8005\uFF0C\u6B64\u300C\u53EF\u5B58\u53D6\u6027\u6307\u5357\u300D\u6703\u63D0\u4F9B\u6709\u95DC\u7DB2\u8DEF\u53EF\u5B58\u53D6\u6027\u7BC4\u4F8B\u7684\u6DF1\u5165\u8CC7\u8A0A\u3002
390
390
  TOOLS_CARD_15_IMG_ALT=\u7528\u65BC\u986F\u793A\u53EF\u5B58\u53D6\u6027\u6307\u5357\u7684\u5716\u7247
391
+ TOOLS_CARD_16_TEXT=UI5 \u6E2C\u8A66\u8A18\u9304\u5668\u5DE5\u5177\u6703\u900F\u904E\u5728\u700F\u89BD\u5668\u4E2D\u8A18\u9304\u60A8\u7684\u52D5\u4F5C\uFF0C\u4EE5\u5354\u52A9\u60A8\u5EFA\u7ACB UI5 \u6574\u5408\u6E2C\u8A66\u3002
392
+ TOOLS_CARD_16_IMG_ALT=\u7528\u65BC\u986F\u793A UI5 \u6E2C\u8A66\u8A18\u9304\u5668\u7684\u5716\u7247
391
393
  API_MASTER_PLACEHOLDER=\u7BE9\u9078
392
394
  API_MASTER_EXPAND_BTN_TOOLTIP=\u5168\u90E8\u5C55\u958B
393
395
  API_MASTER_COLLAPSE_BTN_TOOLTIP=\u5168\u90E8\u6536\u7E2E
@@ -201,7 +201,7 @@ sap.ui.define([
201
201
  versionName: oVersionInfo.name,
202
202
  version: [oVersion.getMajor(), oVersion.getMinor(), oVersion.getPatch()].join("."),
203
203
  fullVersion: oVersionInfo.version,
204
- openUi5Version: sVersionPrefixPath || sap.ui.version,
204
+ openUi5Version: sVersionPrefixPath || oVersionInfo.version,
205
205
  isOpenUI5: bOpenUI5,
206
206
  isSnapshotVersion: bSnapshot,
207
207
  isDevVersion: bSnapshot,
@@ -163,20 +163,17 @@ sap.ui.define([
163
163
  ThemePicker.init(oController);
164
164
 
165
165
  this.MENU_LINKS_MAP = {
166
- "legal": "https://www.sap.com/corporate/en/legal/impressum.html",
167
- "privacy": "https://www.sap.com/corporate/en/legal/privacy.html",
168
- "terms_of_use": "https://www.sap.com/corporate/en/legal/terms-of-use.html",
169
166
  "copyright": "https://www.sap.com/corporate/en/legal/copyright.html",
170
167
  "trademark": "https://www.sap.com/corporate/en/legal/trademark.html",
171
168
  "disclaimer": "https://help.sap.com/viewer/disclaimer",
172
- "sitemap": "sitemap",
173
- "license": "LICENSE.txt"
169
+ "sitemap": "sitemap"
174
170
  };
175
171
 
172
+ jQuery.extend(this.MENU_LINKS_MAP, BaseController.LEGAL_LINKS);
173
+
176
174
  this.getOwnerComponent().loadVersionInfo().then(function () {
177
175
  var sProduct;
178
176
  if (this.getModel("versionData").getProperty("/isOpenUI5")) {
179
- this.MENU_LINKS_MAP["Terms of Use"] = "TermsOfUse.txt";
180
177
  sProduct = "OPENUI5";
181
178
  } else {
182
179
  sProduct = "SAPUI5";
@@ -209,6 +206,8 @@ sap.ui.define([
209
206
 
210
207
  this.oRouter = this.getRouter();
211
208
 
209
+ this._aNeoAppVersions = [];
210
+
212
211
  this._selectHeader = this._oView.byId("selectHeader");
213
212
  this._tabHeader = this._oView.byId("tabHeader");
214
213
 
@@ -23,11 +23,13 @@ sap.ui.define([
23
23
  // shortcut for sap.m.SplitAppMode
24
24
  var SplitAppMode = mobileLibrary.SplitAppMode;
25
25
 
26
+ var URLHelper = mobileLibrary.URLHelper;
27
+
26
28
  var _oWebPageTitleUtil = new WebPageTitleUtil();
27
29
 
28
30
  var _oPageTitle = [];
29
31
 
30
- return Controller.extend("sap.ui.documentation.sdk.controller.BaseController", {
32
+ var BaseController = Controller.extend("sap.ui.documentation.sdk.controller.BaseController", {
31
33
 
32
34
  // Prerequisites
33
35
  _oCore: sap.ui.getCore(),
@@ -233,6 +235,16 @@ sap.ui.define([
233
235
  handleLandingImageLoad: function () {
234
236
  this.getView().byId("landingImageHeadline").setVisible(true);
235
237
  },
238
+ /**
239
+ * Handles the click on an item of the Footer Master (the footer placed
240
+ * at the bottom of any MasterPage (left side of the SplitApp)).
241
+ * @param {object} oEvent the Event object from which we are going to get the correct item key.
242
+ */
243
+ handleFooterMasterItemPress: function(oEvent) {
244
+ var sTargetText = oEvent.getParameter("item").getKey(),
245
+ sTarget = BaseController.LEGAL_LINKS[sTargetText];
246
+ URLHelper.redirect(sTarget, true);
247
+ },
236
248
  /**
237
249
  * Checks if a control has API Reference
238
250
  * @param {string} sControlName
@@ -261,5 +273,17 @@ sap.ui.define([
261
273
  return;
262
274
  }
263
275
  });
276
+
277
+ /**
278
+ * STATIC MEMBERS
279
+ */
280
+ BaseController.LEGAL_LINKS = {
281
+ "legal": "https://www.sap.com/corporate/en/legal/impressum.html",
282
+ "privacy": "https://www.sap.com/corporate/en/legal/privacy.html",
283
+ "terms_of_use": "https://www.sap.com/corporate/en/legal/terms-of-use.html",
284
+ "license": "LICENSE.txt"
285
+ };
286
+
287
+ return BaseController;
264
288
  }
265
289
  );
@@ -196,9 +196,34 @@ sap.ui.define([
196
196
  });
197
197
  },
198
198
 
199
+ /**
200
+ * Formats the name in NPM style string:
201
+ *
202
+ * A package.json file must contain "name" and "version" fields.
203
+ * The "name" field contains your package's name, and must be lowercase and one word,
204
+ * and may contain hyphens and underscores.
205
+ *
206
+ * @param {string} name The name to format
207
+ * @returns {string} Formatted name
208
+ */
209
+ _formatNameToNpmSpec: function (name) {
210
+ var result;
211
+ var testValidChars = /[^\w_\-\.]+/gi; // Only "words", "-", "_" and "."
212
+
213
+ name = name
214
+ .replace(testValidChars, "") // Cleanup invalid characters
215
+ .replaceAll(".", "-"); // Replace the dots with dashes
216
+
217
+ result = name.split(/(?=[A-Z])/); // Split on Capital letters
218
+
219
+ return result
220
+ .map(function (chunk) { return chunk.toLowerCase(); })
221
+ .join("-");
222
+ },
223
+
199
224
  _formatPackageJson: function (sPackageFile, sManifestFile, oData) {
200
225
  var sFormattedPackageFile = sPackageFile.replace(/{{TITLE}}/g, oData.title)
201
- .replace(/{{SAMPLE_ID}}/g, oData.id),
226
+ .replace(/{{SAMPLE_ID}}/g, this._formatNameToNpmSpec(oData.id)),
202
227
  oPackageFile = JSON.parse(sFormattedPackageFile),
203
228
  oPackageDependencies = oPackageFile.dependencies,
204
229
  oManifestFile,
@@ -226,7 +251,7 @@ sap.ui.define([
226
251
  },
227
252
 
228
253
  _formatYamlFile: function(sFile, oData) {
229
- return sFile.replace(/{{SAMPLE_ID}}/g, oData.id);
254
+ return sFile.replace(/{{SAMPLE_ID}}/g, this._formatNameToNpmSpec(oData.id));
230
255
  },
231
256
 
232
257
  _formatManifestJsFile: function (sRawManifestFileJs) {
@@ -60,8 +60,8 @@ sap.ui.define([
60
60
  this.setModel(new JSONModel({
61
61
  inspectorHomeLink: "topic/b24e72443eb34d0fb7bf6940f2d697eb",
62
62
  supportAssistantHomeLink: oData.supportAssistant.href,
63
- iconExplorerHomeLink: "topic/21ea0ea94614480d9a910b2e93431291"
64
- // etc
63
+ iconExplorerHomeLink: "topic/21ea0ea94614480d9a910b2e93431291",
64
+ ui5TestRecorderHomeLink: oData.ui5TestRecorder.href
65
65
  }), "newWindowLinks");
66
66
  },
67
67
 
@@ -47,13 +47,13 @@ sap.ui.define([
47
47
  sUrl = document.location.href,
48
48
  sRedirectUrl,
49
49
  sVersion = DemokitURLUtil.parseVersion(sUrl),
50
- isRemoved = false;
50
+ oPatchInfo = this._getPatchInfo(oVersionInfo, sVersion),
51
+ isRemoved = oPatchInfo && oPatchInfo.removed,
52
+ isRuntimeOnly = oPatchInfo && oPatchInfo.runtimeOnly;
51
53
 
52
54
  oMessagePage.setBusy(false);
53
55
 
54
- isRemoved = this._isVersionRemoved(oVersionInfo, sVersion);
55
-
56
- if (isRemoved && DemokitURLUtil.requestsDemokitView(sUrl)) {
56
+ if ((isRemoved || isRuntimeOnly) && DemokitURLUtil.requestsDemokitView(sUrl)) {
57
57
  // redirect to the latest (version-less) URL
58
58
  sRedirectUrl = DemokitURLUtil.removeVersion(sUrl);
59
59
  mLib.URLHelper.redirect(sRedirectUrl);
@@ -72,6 +72,10 @@ sap.ui.define([
72
72
  // show removed message
73
73
  oMessagePage.setText(this._getLibraryResourceBundle().getText("NOT_FOUND_REMOVED_TEXT"));
74
74
  oReadMoreBtn.setVisible(true);
75
+ } else if (isRuntimeOnly) {
76
+ // show removed message
77
+ oMessagePage.setText(this._getLibraryResourceBundle().getText("NOT_FOUND_DK_REMOVED_TEXT"));
78
+ oReadMoreBtn.setVisible(true);
75
79
  } else {
76
80
  // show unavailable message
77
81
  oReadMoreBtn.setVisible(false);
@@ -79,17 +83,11 @@ sap.ui.define([
79
83
  }
80
84
  },
81
85
 
82
- _isVersionRemoved: function (oVersionInfo, sVersion) {
83
- var aPatches = oVersionInfo.patches,
84
- iVersionIndex,
85
- reVersion;
86
-
87
- iVersionIndex = aPatches.findIndex(function (oData) {
88
- reVersion = new RegExp(oData.version);
89
- return oData.removed && reVersion.test(sVersion);
86
+ _getPatchInfo: function (oVersionInfo, sVersion) {
87
+ var aPatches = oVersionInfo.patches;
88
+ return aPatches.find(function (oData) {
89
+ return sVersion === oData.version;
90
90
  });
91
-
92
- return iVersionIndex > -1;
93
91
  },
94
92
 
95
93
  _getLibraryResourceBundle: function () {
@@ -230,7 +230,7 @@ function() {
230
230
  Highlighter.prototype._createHighlightedNode = function (oTokensToHighlight, sText) {
231
231
  var oRootNode = document.createElement("span"),
232
232
  aAllTokens = [],
233
- fnSort = function(a, b) {return a > b;},
233
+ fnSort = function(a, b) {return parseInt(a) > parseInt(b);},
234
234
  aIndices = Object.keys(oTokensToHighlight).sort(fnSort),
235
235
  iIndex,
236
236
  iStartIndex = 0;
@@ -78,6 +78,12 @@ sap.ui.define([],
78
78
  "text": "Accessibility Guide",
79
79
  "href": "test-resources/sap/m/demokit/accessibilityGuide/webapp/index.html",
80
80
  "hideOnPhone": true
81
+ },
82
+ {
83
+ "id": "ui5TestRecorder",
84
+ "text": "UI5 Test Recorder",
85
+ "href": "topic/2535ef9272064cb6bd6b44e5402d531d",
86
+ "hideOnPhone": true
81
87
  }
82
88
  ];
83
89
 
@@ -87,15 +87,14 @@ pre.sapUiDocumentationAPICode,
87
87
  margin-left: 0;
88
88
  }
89
89
 
90
- html:not(.sapUiMedia-StdExt-Phone) .sapUiDocumentationFooter {
91
- height: 2.5rem;
90
+ .sapMTB.sapUiDocumentationFooter {
91
+ height: auto;
92
+ padding: .5rem 1rem 0.25rem 1rem;
92
93
  }
93
94
 
94
- .sapUiBlockLayoutSizeM:not(.sapUiBlockLayoutKeepFontSize) .sapUiDocumentationFooter > .sapUiBlockCellContent,
95
- .sapUiBlockLayoutSizeL:not(.sapUiBlockLayoutKeepFontSize) .sapUiDocumentationFooter > .sapUiBlockCellContent,
96
- .sapUiBlockLayoutSizeXL:not(.sapUiBlockLayoutKeepFontSize) .sapUiDocumentationFooter > .sapUiBlockCellContent {
97
- padding-top: 0.25rem;
98
- padding-bottom: 0.25rem;
95
+ .sap-phone .sapMTB.sapUiDocumentationFooter {
96
+ padding: 1rem;
97
+ padding-top: 1.25rem;
99
98
  }
100
99
 
101
100
  /* 'index by version' entry item */
@@ -898,6 +897,22 @@ html.sapUiTheme-sap_belize_plus .sapUiDemokit .sapUiDocumentationSplitApp > .sap
898
897
  border-right: 1px solid #4f667a;
899
898
  }
900
899
 
900
+ .sapUiDemokit .sapUiDocumentationMasterPage .sapUiFixFlex .sapUiFixFlexFlexible .sapUiFixFlexFlexibleContainer {
901
+ overflow-y: auto;
902
+ margin-bottom: .5625rem;
903
+ }
904
+
905
+ .sapUiDemokit .sapUiDocumentationMasterPage .sapUiFixFlex .sapUiFixFlexFlexible:after {
906
+ content: "";
907
+ display: block;
908
+ width: calc(100% - 2rem);
909
+ height: .0625rem;
910
+ margin: .3125rem 1rem 0 1rem;
911
+ background: var(--sapUiDemoKitAccentColor6);
912
+ position: absolute;
913
+ bottom: .25rem;
914
+ }
915
+
901
916
  html.sapUiTheme-sap_fiori_3_hcb .sapUiDemokit .sapMSplitContainerMaster,
902
917
  html.sapUiTheme-sap_fiori_3_hcw .sapUiDemokit .sapMSplitContainerMaster,
903
918
  html.sapUiTheme-sap_belize_hcb .sapUiDemokit .sapMSplitContainerMaster,
@@ -935,10 +950,6 @@ html:not(.sapUiTheme-sap_belize_hcb):not(.sapUiTheme-sap_belize_hcw):not(.sapUiT
935
950
  background-color: #d5e2ef;
936
951
  }
937
952
 
938
- html:not(.sapUiTheme-sap_belize_hcb):not(.sapUiTheme-sap_belize_hcw):not(.sapUiTheme-sap_fiori_3_hcb):not(.sapUiTheme-sap_fiori_3_hcw) .sapUiBlockLayout .sapUiBlockLayoutRow.sapUiBlockHorizontalCellsRow .sapUiBlockLayoutCell.demokitInitialPagesColorPatternFContrast {
939
- background-color: #354a5f;
940
- }
941
-
942
953
  html:not(.sapUiTheme-sap_belize_hcb):not(.sapUiTheme-sap_belize_hcw):not(.sapUiTheme-sap_fiori_3_hcb):not(.sapUiTheme-sap_fiori_3_hcw) .demokitInitialPagesWhiteText {
943
954
  color: #fff;
944
955
  text-shadow: none;
@@ -78,39 +78,39 @@
78
78
  });
79
79
  };
80
80
 
81
- loadInfo().then(function(){
81
+ // the fl lib has to be loaded before the Component gets created
82
+ Promise.all([
83
+ loadInfo(),
84
+ sap.ui.getCore().loadLibrary("sap.ui.fl", {async: true}),
85
+ sap.ui.getCore().loadLibrary("sap.ui.rta", {async: true})
86
+ ]).then(function(){
82
87
 
83
88
  Log.info("Samples paths added successfully");
84
89
  var sCompId = 'sampleComp-' + sSampleId;
85
90
  var sCompName = sSampleId;
86
91
 
87
- Promise.all([
88
- sap.ui.getCore().loadLibrary("sap.ui.fl", {async: true}),
89
- sap.ui.getCore().loadLibrary("sap.ui.rta", {async: true})
90
- ]).then(function () {
91
- sap.ui.require([
92
- "sap/ui/fl/Utils",
93
- "sap/ui/fl/FakeLrepConnectorLocalStorage",
94
- "sap/ui/core/util/reflection/JsControlTreeModifier"
95
- ], function(Utils,
96
- FakeLrepConnectorLocalStorage,
97
- JsControlTreeModifier) {
98
- // fake stable IDs
99
- JsControlTreeModifier.checkControlId = function () {
100
- return true;
101
- };
102
- Utils.checkControlId = function() {
103
- return true;
104
- };
105
- FakeLrepConnectorLocalStorage.enableFakeConnector({
106
- "isProductiveSystem": true
107
- });
108
- postMessageToOrigin({
109
- type: "RTA",
110
- data: {
111
- "msg": "RTA is loaded"
112
- }
113
- });
92
+ sap.ui.require([
93
+ "sap/ui/fl/Utils",
94
+ "sap/ui/core/util/reflection/JsControlTreeModifier"
95
+ ], function(
96
+ Utils,
97
+ JsControlTreeModifier
98
+ ) {
99
+ // fake stable IDs and app component
100
+ JsControlTreeModifier.checkControlId = function () {
101
+ return true;
102
+ };
103
+ Utils.checkControlId = function() {
104
+ return true;
105
+ };
106
+ Utils.isApplication = function() {
107
+ return true;
108
+ };
109
+ postMessageToOrigin({
110
+ type: "RTA",
111
+ data: {
112
+ "msg": "RTA is loaded"
113
+ }
114
114
  });
115
115
  });
116
116
 
@@ -118,11 +118,11 @@
118
118
  id: sCompId,
119
119
  name: sCompName
120
120
  }).then(function (oComponent) {
121
+ var oConfig = oComponent.getManifestEntry("/sap.ui5/config");
121
122
 
122
123
  var oContainer = new ComponentContainer({component : oComponent, height: "100%"})
123
124
  .placeAt("content");
124
125
 
125
- var oConfig = oComponent.getMetadata().getConfig();
126
126
  var bOpenStandalone = new URLSearchParams(window.location.search).has("dk-sample-standalone");
127
127
  // if dk-sample-standalone is used,
128
128
  // display message for samples with own index.html
@@ -146,7 +146,7 @@
146
146
  "msg": "fired after component container is placed in DOM"
147
147
  };
148
148
 
149
- oMessage.config = oComponent.getMetadata().getConfig();
149
+ oMessage.config = oConfig;
150
150
  postMessageToOrigin(oMessage);
151
151
  window.addEventListener("message", function(eMessage){
152
152
  if (eMessage.data.type === "EXIT") {
@@ -239,6 +239,7 @@
239
239
  oScriptTag.dataset.sapUiCompatversion = "edge";
240
240
  oScriptTag.dataset.sapUiOninit = "onInit";
241
241
  oScriptTag.dataset.sapUiBindingsyntax = "complex";
242
+ oScriptTag.dataset.sapUiFlexibilityservices = '[{"connector": "LocalStorageConnector"}]';
242
243
 
243
244
  document.write(oScriptTag.outerHTML);
244
245
 
@@ -11,6 +11,6 @@
11
11
  "@openui5/themelib_sap_fiori_3" : "^1"
12
12
  },
13
13
  "devDependencies": {
14
- "@ui5/cli": "^2.0.0"
14
+ "@ui5/cli": "^3"
15
15
  }
16
16
  }
@@ -1,4 +1,4 @@
1
- specVersion: '2.3'
1
+ specVersion: '3.0'
2
2
  metadata:
3
3
  name: "{{SAMPLE_ID}}"
4
4
  type: application
@@ -47,6 +47,17 @@ sap.ui.define([
47
47
  }, this);
48
48
  },
49
49
 
50
+ /**
51
+ * Helper function which removes non-standard characters from a URL (see BCP: 2380008679)
52
+ *
53
+ * @param {string} sURL string to be reworked
54
+ * @returns {string} The reworked URL as string or the sURL itself if it's invalid
55
+ * @private
56
+ */
57
+ _removeNonStandardEncoding: function (sURL) {
58
+ return typeof sURL === 'string' ? sURL.replace(/[\[\]']+/g,'') : sURL;
59
+ },
60
+
50
61
  _onOldEntityRouteMatched: function(oEvent) {
51
62
  this.navTo("entity", {
52
63
  id: oEvent.getParameter("arguments").id
@@ -251,6 +262,11 @@ sap.ui.define([
251
262
 
252
263
  sTarget = getHref(oAnchorElement);
253
264
 
265
+ /*eslint-disable no-script-url */
266
+ if (sTarget === "javascript:void(0)") {
267
+ return;
268
+ }
269
+
254
270
  bParsed = /^blob:/.test(sTarget)
255
271
  || /^https?:\/\//.test(sTarget)
256
272
  || /^test-resources\//.test(sTarget)
@@ -280,8 +296,7 @@ sap.ui.define([
280
296
  sPath = sPath.replace("#", "%23");
281
297
  }
282
298
 
283
- // remove non-standard URL encoding
284
- sPath = sPath.replace(/[\[\]']+/g,''); // removing unwanted brackets from URL BCP: 2380008679
299
+ sPath = this._removeNonStandardEncoding(sPath);
285
300
 
286
301
  this.parse(sPath);
287
302
 
@@ -303,7 +318,7 @@ sap.ui.define([
303
318
  oUri;
304
319
 
305
320
  if (oAnchorElement) {
306
- sTargetHref = getHref(oAnchorElement);
321
+ sTargetHref = this._removeNonStandardEncoding(getHref(oAnchorElement));
307
322
  bNewWindow = bCtrlHold || !getSameWindow(oAnchorElement);
308
323
  }
309
324
 
@@ -278,10 +278,7 @@
278
278
  </l:BlockLayout>
279
279
  </Panel>
280
280
 
281
- <l:BlockLayout>
282
- <l:BlockLayoutRow>
283
281
  <core:Fragment id="footerFragment" fragmentName="sap.ui.documentation.sdk.view.Footer" type="XML" />
284
- </l:BlockLayoutRow>
285
- </l:BlockLayout>
282
+
286
283
  </Page>
287
284
  </mvc:View>
@@ -2,6 +2,8 @@
2
2
  controllerName="sap.ui.documentation.sdk.controller.ApiMaster"
3
3
  xmlns:mvc="sap.ui.core.mvc"
4
4
  xmlns="sap.m"
5
+ xmlns:l="sap.ui.layout"
6
+ xmlns:core="sap.ui.core"
5
7
  xmlns:custom="sap.ui.documentation"
6
8
  class="sapContrast sapContrastPlus">
7
9
 
@@ -28,20 +30,27 @@
28
30
 
29
31
  <content>
30
32
 
31
- <Tree
32
- id="tree"
33
- mode="SingleSelectMaster"
34
- noDataText="{i18n>API_MASTER_NO_DATA_TEXT}"
35
- selectionChange="onNodeSelect"
36
- items="{treeData>/}">
37
- <custom:DemokitTreeItem
38
- title="{treeData>displayName}"
39
- target="{treeData>name}"
40
- entityType="{treeData>kind}"
41
- section="api"
42
- class="sapDemokitTreeItem"
43
- deprecated="{treeData>deprecated}"/>
44
- </Tree>
33
+ <l:FixFlex fixFirst="false">
34
+ <l:flexContent>
35
+ <Tree
36
+ id="tree"
37
+ mode="SingleSelectMaster"
38
+ noDataText="{i18n>API_MASTER_NO_DATA_TEXT}"
39
+ selectionChange="onNodeSelect"
40
+ items="{treeData>/}">
41
+ <custom:DemokitTreeItem
42
+ title="{treeData>displayName}"
43
+ target="{treeData>name}"
44
+ entityType="{treeData>kind}"
45
+ section="api"
46
+ class="sapDemokitTreeItem"
47
+ deprecated="{treeData>deprecated}"/>
48
+ </Tree>
49
+ </l:flexContent>
50
+ <l:fixContent>
51
+ <core:Fragment fragmentName="sap.ui.documentation.sdk.view.FooterMaster" type="XML" />
52
+ </l:fixContent>
53
+ </l:FixFlex>
45
54
 
46
55
  </content>
47
56
 
@@ -406,10 +406,7 @@
406
406
  </l:BlockLayout>
407
407
  </Panel>
408
408
 
409
- <l:BlockLayout>
410
- <l:BlockLayoutRow>
411
- <core:Fragment id="footerFragment" fragmentName="sap.ui.documentation.sdk.view.Footer" type="XML" />
412
- </l:BlockLayoutRow>
413
- </l:BlockLayout>
409
+ <core:Fragment id="footerFragment" fragmentName="sap.ui.documentation.sdk.view.Footer" type="XML" />
410
+
414
411
  </Page>
415
412
  </mvc:View>
@@ -1,6 +1,8 @@
1
1
  <mvc:View
2
2
  controllerName="sap.ui.documentation.sdk.controller.ControlsMaster"
3
3
  xmlns:mvc="sap.ui.core.mvc"
4
+ xmlns:l="sap.ui.layout"
5
+ xmlns:core="sap.ui.core"
4
6
  xmlns="sap.m"
5
7
  class="sapContrast sapContrastPlus">
6
8
  <Page
@@ -20,36 +22,43 @@
20
22
 
21
23
  <!-- Navigation List -->
22
24
  <content>
23
- <List id="exploredMasterList"
24
- mode="{viewModel>/listMode}"
25
- selectionChange="onNavToEntity"
26
- noDataText="{i18n>CONTROLS_MASTER_NO_DATA_TEXT}"
27
- items="{path: '/entities',
28
- groupHeaderFactory: '.getGroupHeader',
29
- sorter: [{
30
- path: 'category',
31
- descending: false,
32
- group: true
33
- },{
34
- path: 'name',
35
- descending: false
36
- }]}">
37
- <infoToolbar>
38
- <Toolbar id="vsFilterBar"
39
- active="true"
40
- visible="false"
41
- press="handleListSettings">
42
- <Label id="vsFilterLabel" />
43
- </Toolbar>
44
- </infoToolbar>
45
- <items>
46
- <StandardListItem
47
- title="{name}"
48
- counter="{sampleCount}"
49
- type="{viewModel>/listItemType}"
50
- press="onNavToEntity" />
51
- </items>
52
- </List>
25
+ <l:FixFlex fixFirst="false">
26
+ <l:flexContent>
27
+ <List id="exploredMasterList"
28
+ mode="{viewModel>/listMode}"
29
+ selectionChange="onNavToEntity"
30
+ noDataText="{i18n>CONTROLS_MASTER_NO_DATA_TEXT}"
31
+ items="{path: '/entities',
32
+ groupHeaderFactory: '.getGroupHeader',
33
+ sorter: [{
34
+ path: 'category',
35
+ descending: false,
36
+ group: true
37
+ },{
38
+ path: 'name',
39
+ descending: false
40
+ }]}">
41
+ <infoToolbar>
42
+ <Toolbar id="vsFilterBar"
43
+ active="true"
44
+ visible="false"
45
+ press="handleListSettings">
46
+ <Label id="vsFilterLabel" />
47
+ </Toolbar>
48
+ </infoToolbar>
49
+ <items>
50
+ <StandardListItem
51
+ title="{name}"
52
+ counter="{sampleCount}"
53
+ type="{viewModel>/listItemType}"
54
+ press="onNavToEntity" />
55
+ </items>
56
+ </List>
57
+ </l:flexContent>
58
+ <l:fixContent>
59
+ <core:Fragment fragmentName="sap.ui.documentation.sdk.view.FooterMaster" type="XML" />
60
+ </l:fixContent>
61
+ </l:FixFlex>
53
62
  </content>
54
63
  </Page>
55
64
  </mvc:View>
@@ -107,13 +107,9 @@
107
107
  </l:BlockLayout>
108
108
  </Panel>
109
109
  </l:VerticalLayout>
110
- <l:BlockLayout
111
- id="demoAppsFooter"
112
- visible="{/bFooterVisible}">
113
- <l:BlockLayoutRow>
114
- <core:Fragment id="footerFragment" fragmentName="sap.ui.documentation.sdk.view.Footer" type="XML" />
115
- </l:BlockLayoutRow>
116
- </l:BlockLayout>
110
+
111
+ <core:Fragment id="demoAppsFooter" visible="{/bFooterVisible}" fragmentName="sap.ui.documentation.sdk.view.Footer" type="XML" />
112
+
117
113
  </ScrollContainer>
118
114
  </content>
119
115
  <dependents>