@openui5/sap.ui.documentation 1.145.1 → 1.147.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 (68) hide show
  1. package/REUSE.toml +0 -51
  2. package/THIRDPARTY.txt +6 -50
  3. package/package.json +7 -7
  4. package/src/sap/ui/documentation/.library +1 -1
  5. package/src/sap/ui/documentation/LightTable.js +20 -46
  6. package/src/sap/ui/documentation/ObjectPageSection.js +108 -0
  7. package/src/sap/ui/documentation/ObjectPageSubSection.js +114 -15
  8. package/src/sap/ui/documentation/Row.js +146 -7
  9. package/src/sap/ui/documentation/library.js +2 -2
  10. package/src/sap/ui/documentation/messagebundle.properties +12 -0
  11. package/src/sap/ui/documentation/messagebundle_de.properties +1 -1
  12. package/src/sap/ui/documentation/messagebundle_en.properties +2 -2
  13. package/src/sap/ui/documentation/messagebundle_en_US_saprigi.properties +3 -0
  14. package/src/sap/ui/documentation/sdk/Component.js +6 -0
  15. package/src/sap/ui/documentation/sdk/controller/App.controller.js +1 -1
  16. package/src/sap/ui/documentation/sdk/controller/Code.controller.js +1 -0
  17. package/src/sap/ui/documentation/sdk/controller/ErrorHandler.js +1 -0
  18. package/src/sap/ui/documentation/sdk/controller/Sample.controller.js +10 -5
  19. package/src/sap/ui/documentation/sdk/controller/SubApiDetail.controller.js +525 -17
  20. package/src/sap/ui/documentation/sdk/controller/util/ConfigUtil.js +1 -0
  21. package/src/sap/ui/documentation/sdk/controller/util/CookiesConsentManager.js +1 -0
  22. package/src/sap/ui/documentation/sdk/controller/util/ResourcesInfo.js +5 -0
  23. package/src/sap/ui/documentation/sdk/controller/util/UsageTracker.js +1 -0
  24. package/src/sap/ui/documentation/sdk/cookieSettingsDialog/controller/CookieSettingsDialog.controller.js +1 -0
  25. package/src/sap/ui/documentation/sdk/cookieSettingsDialog/view/CookieSettingsDialog.fragment.xml +5 -5
  26. package/src/sap/ui/documentation/sdk/css/style.css +23 -0
  27. package/src/sap/ui/documentation/sdk/index.js +6 -0
  28. package/src/sap/ui/documentation/sdk/thirdparty/highlight.js/highlight.js +3 -3
  29. package/src/sap/ui/documentation/sdk/view/AboutDialog.fragment.xml +6 -6
  30. package/src/sap/ui/documentation/sdk/view/ApiDetailInitial.view.xml +2 -2
  31. package/src/sap/ui/documentation/sdk/view/ApiMaster.view.xml +6 -6
  32. package/src/sap/ui/documentation/sdk/view/App.view.xml +11 -11
  33. package/src/sap/ui/documentation/sdk/view/ChangeVersionDialog.fragment.xml +4 -4
  34. package/src/sap/ui/documentation/sdk/view/Code.view.xml +16 -16
  35. package/src/sap/ui/documentation/sdk/view/Controls.view.xml +2 -2
  36. package/src/sap/ui/documentation/sdk/view/ControlsMaster.view.xml +6 -6
  37. package/src/sap/ui/documentation/sdk/view/Entity.view.xml +3 -3
  38. package/src/sap/ui/documentation/sdk/view/FioriDevelopmentRowSAPUI5.fragment.xml +1 -1
  39. package/src/sap/ui/documentation/sdk/view/Footer.fragment.xml +2 -2
  40. package/src/sap/ui/documentation/sdk/view/FooterMaster.fragment.xml +1 -1
  41. package/src/sap/ui/documentation/sdk/view/GlobalSearchPicker.fragment.xml +6 -6
  42. package/src/sap/ui/documentation/sdk/view/Group.view.xml +1 -1
  43. package/src/sap/ui/documentation/sdk/view/LiveEditor.view.xml +4 -4
  44. package/src/sap/ui/documentation/sdk/view/News.view.xml +4 -4
  45. package/src/sap/ui/documentation/sdk/view/NewsPopover.fragment.xml +4 -4
  46. package/src/sap/ui/documentation/sdk/view/NotFound.view.xml +1 -1
  47. package/src/sap/ui/documentation/sdk/view/ReleaseDialog.fragment.xml +1 -1
  48. package/src/sap/ui/documentation/sdk/view/ReleaseNotes.view.xml +1 -1
  49. package/src/sap/ui/documentation/sdk/view/Resources.view.xml +24 -1
  50. package/src/sap/ui/documentation/sdk/view/Sample.view.xml +15 -15
  51. package/src/sap/ui/documentation/sdk/view/SampleNotFound.view.xml +2 -2
  52. package/src/sap/ui/documentation/sdk/view/SearchPage.view.xml +9 -9
  53. package/src/sap/ui/documentation/sdk/view/Sitemap.view.xml +1 -1
  54. package/src/sap/ui/documentation/sdk/view/SubApiDetail.view.xml +76 -77
  55. package/src/sap/ui/documentation/sdk/view/TopicDetail.view.xml +3 -3
  56. package/src/sap/ui/documentation/sdk/view/TopicDetailInitial.view.xml +4 -4
  57. package/src/sap/ui/documentation/sdk/view/TopicMaster.view.xml +5 -5
  58. package/src/sap/ui/documentation/sdk/view/VersionNotFound.view.xml +3 -3
  59. package/src/sap/ui/documentation/sdk/view/Welcome.view.xml +13 -13
  60. package/src/sap/ui/documentation/sdk/view/WelcomeCustomRowOpenUI5.fragment.xml +1 -1
  61. package/src/sap/ui/documentation/sdk/view/appSettingsDialog.fragment.xml +2 -2
  62. package/src/sap/ui/documentation/sdk/view/globalSettingsDialog.fragment.xml +2 -2
  63. package/src/sap/ui/documentation/sdk/view/viewSettingsDialog.fragment.xml +1 -1
  64. package/src/sap/ui/documentation/sdk/view/warningSampleDialog.fragment.xml +1 -1
  65. package/src/sap/ui/documentation/themes/base/Documentation.less +4 -4
  66. package/src/sap/ui/documentation/themes/base/LightTable.less +29 -0
  67. package/src/sap/ui/documentation/themes/sap_belize_base/Documentation.less +4 -4
  68. package/src/sap/ui/documentation/themes/sap_horizon_dark/Documentation.less +1 -1
@@ -3,34 +3,173 @@
3
3
  * (c) Copyright 2026 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
- sap.ui.define(['sap/ui/core/Element'],
7
- function(Element) {
6
+ sap.ui.define([
7
+ 'sap/ui/core/Control',
8
+ 'sap/ui/core/Icon'
9
+ ], function(Control, Icon) {
8
10
  "use strict";
9
11
 
10
12
  /**
11
13
  * @class
12
14
  * Provides a row element for the <code>LightTable</code>.
13
- * @extends sap.ui.core.Element
15
+ * @extends sap.ui.core.Control
14
16
  * @private
15
17
  * @ui5-restricted sdk
16
18
  */
17
- return Element.extend("sap.ui.documentation.Row", {
19
+ var Row = Control.extend("sap.ui.documentation.Row", {
18
20
  metadata : {
19
21
  library: "sap.ui.documentation",
20
22
  properties: {
21
23
  /**
22
24
  * Determines whether the row is visible.
23
25
  */
24
- visible: {type: "boolean"}
26
+ visible: {type: "boolean", defaultValue: true},
27
+ /**
28
+ * Determines whether the row is expanded (showing subRows).
29
+ */
30
+ expanded: {type: "boolean", defaultValue: false},
31
+ /**
32
+ * Determines whether the row can be expanded/collapsed (shows expand/collapse icon).
33
+ */
34
+ expandable: {type: "boolean", defaultValue: false},
35
+ /**
36
+ * The name of the typedef that this parameter refers to
37
+ */
38
+ typedefName: {type : "string", defaultValue : ""}
25
39
  },
26
40
  defaultAggregation : "content",
27
41
  aggregations: {
28
42
  /**
29
43
  * Controls to be displayed by the <code>LightTable</code>.
30
44
  */
31
- content: {type: "sap.ui.core.Control", multiple: true}
45
+ content: {type: "sap.ui.core.Control", multiple: true},
46
+ /**
47
+ * Sub-rows to be displayed when the row is expanded.
48
+ */
49
+ subRows: {type: "sap.ui.documentation.Row", multiple: true},
50
+ /**
51
+ * Internal Icon control for the expand/collapse functionality
52
+ */
53
+ _expandIcon: {type: "sap.ui.core.Icon", multiple: false, visibility: "hidden"}
54
+ },
55
+ events: {
56
+ /**
57
+ * Event is fired when the user clicks on the expand/collapse icon.
58
+ */
59
+ expandToggle: {}
60
+ }
61
+ },
62
+
63
+ /**
64
+ * Creates the expand/collapse icon
65
+ * @private
66
+ */
67
+ _getExpandCollapseIcon: function() {
68
+ if (!this.getAggregation("_expandIcon")) {
69
+ var oExpandIcon = new Icon({
70
+ press: function() {
71
+ this.fireExpandToggle();
72
+ }.bind(this)
73
+ });
74
+
75
+ // Add custom classes for styling
76
+ oExpandIcon.addStyleClass("sapUiTinyMarginEnd").addStyleClass("sapUiDocTypedefExpandIcon");
77
+
78
+ this.setAggregation("_expandIcon", oExpandIcon);
79
+
80
+ // Update the icon appearance based on the current expanded state
81
+ this._updateExpandIconState();
82
+ }
83
+
84
+ return this.getAggregation("_expandIcon");
85
+ },
86
+
87
+ /**
88
+ * Updates the expand icon state (src) based on the expanded property
89
+ * @private
90
+ */
91
+ _updateExpandIconState: function() {
92
+ var oExpandIcon = this.getAggregation("_expandIcon");
93
+
94
+ if (oExpandIcon) {
95
+ var bExpanded = this.getExpanded();
96
+ oExpandIcon.setSrc(bExpanded ? "sap-icon://slim-arrow-down" : "sap-icon://slim-arrow-right");
97
+ }
98
+ },
99
+
100
+ /**
101
+ * Updates the expand icon when the expanded property changes
102
+ */
103
+ setExpanded: function(bExpanded) {
104
+ this.setProperty("expanded", bExpanded, true); // Suppress rerendering
105
+ this._updateExpandIconState();
106
+ return this;
107
+ },
108
+ renderer: {
109
+ apiVersion: 2,
110
+
111
+ render: function(oRm, oControl) {
112
+ var aControls = oControl.getContent(),
113
+ aSubRows = oControl.getSubRows(),
114
+ bExpanded = oControl.getExpanded(),
115
+ bExpandable = oControl.getExpandable(),
116
+ bVisible = oControl.getVisible(),
117
+ aLen,
118
+ a;
119
+
120
+ // Don't render if not visible
121
+ if (!bVisible) {
122
+ return;
123
+ }
124
+
125
+ // Get column titles from parent LightTable
126
+ var oParent = oControl.getParent(),
127
+ aColumnTitles = oParent && oParent.getColumnTitles ? oParent.getColumnTitles() : [];
128
+
129
+ // Render the main row
130
+ oRm.openStart("div", oControl);
131
+ oRm.class("row");
132
+ if (bExpandable) {
133
+ oRm.class(bExpanded ? "expanded" : "collapsed");
134
+ }
135
+ oRm.openEnd();
136
+
137
+ // Render cells
138
+ for (a = 0, aLen = aControls.length; a < aLen; a++) {
139
+ oRm.openStart("div")
140
+ .class("cell")
141
+ .openEnd();
142
+
143
+ // Handle inline title (for responsive view)
144
+ if (a > 0 && aColumnTitles[a]) {
145
+ oRm.openStart("div")
146
+ .class("inTitle")
147
+ .openEnd()
148
+ .text(aColumnTitles[a] + ":")
149
+ .close("div");
150
+ }
151
+
152
+ // Render the expand/collapse icon in the first cell if expandable
153
+ if (a === 0 && bExpandable) {
154
+ oRm.renderControl(oControl._getExpandCollapseIcon());
155
+ }
156
+
157
+ oRm.renderControl(aControls[a]);
158
+ oRm.close("div");
159
+ }
160
+
161
+ oRm.close("div");
162
+
163
+ // Render sub-rows if expanded
164
+ if (bExpanded && aSubRows.length > 0) {
165
+ for (var i = 0; i < aSubRows.length; i++) {
166
+ oRm.renderControl(aSubRows[i]);
167
+ }
168
+ }
32
169
  }
33
170
  }
34
171
  });
35
172
 
36
- });
173
+ return Row;
174
+
175
+ });
@@ -25,14 +25,14 @@ sap.ui.define([
25
25
  * @namespace
26
26
  * @alias sap.ui.documentation
27
27
  * @author SAP SE
28
- * @version 1.145.1
28
+ * @version 1.147.0
29
29
  * @since 1.48
30
30
  * @public
31
31
  */
32
32
  var thisLibrary = Lib.init({
33
33
  apiVersion: 2,
34
34
  name : 'sap.ui.documentation',
35
- version: '1.145.1',
35
+ version: '1.147.0',
36
36
  dependencies : ['sap.ui.core','sap.m'],
37
37
  types: [],
38
38
  interfaces: [],
@@ -782,6 +782,12 @@ API_DETAIL_DEPRECATED_WARNING = For general information about Deprecated feature
782
782
  API_DETAIL_AS_OF_VERSION = As of {0}
783
783
  #XTXT: Text for non-existing version
784
784
  API_DETAIL_NA_VERSION = Version N/A
785
+ #XTOL: Tooltip for the bookmark icon that copies a direct link to the section or subsection
786
+ API_DETAIL_BOOKMARK_TOOLTIP = Copy link to Section
787
+ #XMSG: Toast message shown after the section/subsection URL is successfully copied to clipboard
788
+ API_DETAIL_BOOKMARK_COPIED = URL copied to clipboard
789
+ #XMSG: Toast message shown when clipboard API is unavailable but the URL was updated in the address bar
790
+ API_DETAIL_BOOKMARK_URL_UPDATED = URL updated in address bar
785
791
 
786
792
  #XHED: The title of the intro card on Resources page
787
793
  RESOURCES_INTRO_CARD_TITLE = Resources
@@ -828,6 +834,10 @@ RESOURCES_CARD_DESC_LINTER = UI5 linter is a static code analysis tool for UI5 p
828
834
  RESOURCES_CARD_TITLE_MCPSERVER = UI5 MCP server
829
835
  #XTXT: Card description for UI5 server resource
830
836
  RESOURCES_CARD_DESC_MCPSERVER = The UI5 Model Context Protocol server offers tools to improve the developer experience when working with agentic AI tools.
837
+ #XHED: Card title for SAP Fiori MCP server resource
838
+ RESOURCES_CARD_TITLE_FIORI_MCPSERVER = SAP Fiori MCP server
839
+ #XTXT: Card description for SAP Fiori MCP server resource
840
+ RESOURCES_CARD_DESC_FIORI_MCPSERVER = This package includes a Model Context Protocol (MCP) server for integration with AI coding assistants. The server helps AI models create or modify SAP Fiori applications based on prompts.
831
841
  #XHED: Card title for SAP Business Application Studio resource
832
842
  RESOURCES_CARD_TITLE_BUSINESS_APP_STUDIO = SAP Business Application Studio
833
843
  #XTXT: Card description for SAP Business Application Studio resource
@@ -884,6 +894,8 @@ RESOURCES_CARD_LINK_CARD_EXPLORER = Check out UI Integration with cards
884
894
  RESOURCES_CARD_LINK_LINTER = Check out UI5 linter
885
895
  #XLNK: Link text for UI5 MCP server action button
886
896
  RESOURCES_CARD_LINK_MCPSERVER = Check out UI5 MCP server
897
+ #XLNK: Link text for SAP Fiori MCP server action button
898
+ RESOURCES_CARD_LINK_FIORI_MCPSERVER = Check out SAP Fiori MCP server
887
899
  #XLNK: Link text for SAP Fiori Development Portal action button
888
900
  RESOURCES_CARD_LINK_FIORI_DEV_PORTAL = Check out the SAP Fiori Development Portal
889
901
  #XLNK: Link text for SAP Business Application Studio action button
@@ -8,7 +8,7 @@ APP_TABHEADER_ITEM_API_REFERENCE=API-Referenz
8
8
  APP_TABHEADER_ITEM_SAMPLES=Beispiele
9
9
  APP_TABHEADER_ITEM_DEMO_APPS=Demo-Apps
10
10
  APP_TABHEADER_ITEM_RESOURCES=Ressourcen
11
- APP_TABHEADER_SUBITEM_FIORI_TOOLS=Fiori-Tools
11
+ APP_TABHEADER_SUBITEM_FIORI_TOOLS=SAP Fiori tools
12
12
  APP_TABHEADER_SUBITEM_ICON_EXPLORER=Symbolexplorer
13
13
  APP_TABHEADER_SUBITEM_UI5_INSPECTOR=UI5 Inspector
14
14
  APP_TABHEADER_SUBITEM_UI5_CLI=UI5 CLI
@@ -346,8 +346,8 @@ RELEASE_DIALOG_NO_DATA_TEXT=No changes for this library.
346
346
 
347
347
  ABOUT_DIALOG_TITLE=About
348
348
  ABOUT_DIALOG_TEXT_1=UI5 Demo Kit - UI Development Toolkit for HTML5
349
- ABOUT_DIALOG_TEXT_2=\u00A9 Copyright 2025 SAP SE. All rights reserved.
350
- ABOUT_DIALOG_TEXT_3=\u00A9 2025 SAP SE or an SAP affiliate company.
349
+ ABOUT_DIALOG_TEXT_2=\u00A9 Copyright 2026 SAP SE. All rights reserved.
350
+ ABOUT_DIALOG_TEXT_3=\u00A9 2026 SAP SE or an SAP affiliate company.
351
351
  ABOUT_DIALOG_TEXT_4={0} Version {1}
352
352
  ABOUT_DIALOG_TEXT_5=Open UI5 Version {0}
353
353
  ABOUT_DIALOG_TEXT_6=This software includes the following library versions
@@ -435,6 +435,8 @@ RESOURCES_CARD_TITLE_LINTER=\u206A\u206A\u206A\u200C\u200C\u200C\u200D\u200C\u20
435
435
  RESOURCES_CARD_DESC_LINTER=\u206A\u206A\u206A\u200C\u200B\u200C\u200B\u200D\u200C\u200C\u200C\u200D\u200B\u200C\u200B\u200C\u200C\u200C\u200D\u200B\u200B\u200B\u200B\u200D\u200B\u200B\u200B\u200D\u200C\u200D\u200C\u200C\u200B\u200B\u200D\u200D\u200C\u200D\u200B\u200C\u200B\u200C\u200B\u206AUI5 linter is a static code analysis tool for UI5 projects. It checks JavaScript, XML, JSON, and other files in your project, and reports findings. It helps you follow best practices in your UI5 projects and to adapt them to new UI5 major versions.\u206A\u206A
436
436
  RESOURCES_CARD_TITLE_MCPSERVER=\u206A\u206A\u206A\u200C\u200D\u200C\u200B\u200B\u200C\u200B\u200C\u200B\u200C\u200B\u200C\u200C\u200D\u200D\u200C\u200B\u200D\u200C\u200B\u200C\u200D\u200B\u200D\u200D\u200C\u200D\u200D\u200B\u200D\u200D\u200D\u200D\u200B\u200C\u200B\u200D\u200B\u200B\u206AUI5 MCP server\u206A\u206A
437
437
  RESOURCES_CARD_DESC_MCPSERVER=\u206A\u206A\u206A\u200D\u200B\u200B\u200B\u200B\u200B\u200D\u200C\u200C\u200C\u200D\u200B\u200B\u200B\u200B\u200B\u200D\u200B\u200C\u200C\u200B\u200C\u200B\u200C\u200B\u200C\u200D\u200B\u200B\u200C\u200B\u200D\u200D\u200D\u200C\u200D\u200B\u200C\u200B\u200B\u206AThe UI5 Model Context Protocol server offers tools to improve the developer experience when working with agentic AI tools.\u206A\u206A
438
+ RESOURCES_CARD_TITLE_FIORI_MCPSERVER=\u206A\u206A\u206A\u200D\u200B\u200B\u200B\u200C\u200B\u200B\u200C\u200C\u200C\u200D\u200D\u200D\u200C\u200D\u200B\u200B\u200D\u200D\u200D\u200B\u200C\u200D\u200C\u200C\u200C\u200B\u200D\u200B\u200B\u200C\u200B\u200D\u200B\u200B\u200B\u200B\u200D\u200C\u200B\u206ASAP Fiori MCP server\u206A\u206A
439
+ RESOURCES_CARD_DESC_FIORI_MCPSERVER=\u206A\u206A\u206A\u200D\u200D\u200D\u200D\u200D\u200B\u200B\u200C\u200B\u200B\u200B\u200B\u200D\u200C\u200D\u200D\u200D\u200B\u200D\u200C\u200D\u200B\u200B\u200B\u200D\u200C\u200D\u200C\u200B\u200D\u200D\u200B\u200B\u200D\u200B\u200D\u200B\u200D\u200C\u200B\u206AThis package includes a Model Context Protocol (MCP) server for integration with AI coding assistants. The server helps AI models create or modify SAP Fiori applications based on prompts.\u206A\u206A
438
440
  RESOURCES_CARD_TITLE_BUSINESS_APP_STUDIO=\u206A\u206A\u206A\u200D\u200D\u200C\u200C\u200B\u200B\u200D\u200C\u200D\u200B\u200B\u200C\u200D\u200D\u200D\u200B\u200B\u200D\u200C\u200D\u200B\u200C\u200D\u200C\u200D\u200C\u200D\u200D\u200C\u200D\u200B\u200B\u200D\u200C\u200B\u200D\u200D\u200C\u200B\u206ASAP Business Application Studio\u206A\u206A
439
441
  RESOURCES_CARD_DESC_BUSINESS_APP_STUDIO=\u206A\u206A\u206A\u200C\u200B\u200B\u200D\u200C\u200C\u200D\u200C\u200C\u200C\u200B\u200C\u200D\u200B\u200C\u200D\u200B\u200B\u200D\u200D\u200D\u200B\u200D\u200D\u200C\u200D\u200B\u200C\u200D\u200D\u200D\u200B\u200B\u200C\u200B\u200D\u200B\u200C\u200D\u200D\u200C\u206ASAP Business Application Studio (BAS) is a modern cloud-based development environment, tailored for efficient development and extension of business applications for intelligent enterprises.\u206A\u206A
440
442
 
@@ -465,6 +467,7 @@ RESOURCES_CARD_LINK_FIORI_TOOLS=\u206A\u206A\u206A\u200C\u200B\u200B\u200B\u200C
465
467
  RESOURCES_CARD_LINK_CARD_EXPLORER=\u206A\u206A\u206A\u200D\u200B\u200B\u200B\u200B\u200C\u200B\u200D\u200D\u200B\u200C\u200D\u200D\u200D\u200B\u200C\u200D\u200C\u200B\u200B\u200D\u200D\u200D\u200B\u200B\u200D\u200D\u200B\u200B\u200D\u200B\u200C\u200B\u200D\u200B\u200C\u200C\u200B\u200D\u200C\u206ACheck out UI Integration with cards\u206A\u206A
466
468
  RESOURCES_CARD_LINK_LINTER=\u206A\u206A\u206A\u200C\u200D\u200B\u200B\u200C\u200B\u200D\u200B\u200C\u200C\u200D\u200B\u200B\u200C\u200C\u200B\u200D\u200C\u200C\u200D\u200D\u200D\u200B\u200D\u200B\u200C\u200B\u200B\u200B\u200D\u200C\u200B\u200B\u200D\u200D\u200B\u200C\u200B\u200B\u206ACheck out UI5 linter\u206A\u206A
467
469
  RESOURCES_CARD_LINK_MCPSERVER=\u206A\u206A\u206A\u200D\u200D\u200C\u200C\u200C\u200C\u200D\u200B\u200D\u200D\u200D\u200C\u200D\u200C\u200C\u200C\u200C\u200B\u200C\u200B\u200C\u200D\u200D\u200C\u200C\u200C\u200C\u200B\u200B\u200C\u200C\u200C\u200C\u200B\u200D\u200C\u200C\u200C\u200C\u200D\u206ACheck out UI5 MCP server\u206A\u206A
470
+ RESOURCES_CARD_LINK_FIORI_MCPSERVER=\u206A\u206A\u206A\u200D\u200B\u200B\u200C\u200B\u200B\u200D\u200C\u200C\u200D\u200D\u200B\u200B\u200B\u200C\u200C\u200D\u200C\u200B\u200B\u200D\u200B\u200B\u200C\u200D\u200D\u200B\u200D\u200B\u200B\u200C\u200C\u200D\u200D\u200C\u200C\u200B\u200D\u200C\u200B\u206ACheck out SAP Fiori MCP server\u206A\u206A
468
471
  RESOURCES_CARD_LINK_FIORI_DEV_PORTAL=\u206A\u206A\u206A\u200D\u200D\u200D\u200C\u200D\u200D\u200D\u200D\u200C\u200C\u200B\u200C\u200D\u200D\u200B\u200D\u200C\u200B\u200B\u200B\u200D\u200C\u200B\u200C\u200B\u200D\u200B\u200B\u200C\u200D\u200C\u200B\u200C\u200D\u200D\u200C\u200B\u200D\u200D\u206ACheck out the SAP Fiori Development Portal\u206A\u206A
469
472
  RESOURCES_CARD_LINK_BUSINESS_APP_STUDIO=\u206A\u206A\u206A\u200C\u200C\u200C\u200C\u200D\u200B\u200D\u200C\u200B\u200C\u200B\u200B\u200C\u200D\u200B\u200D\u200C\u200C\u200B\u200B\u200C\u200B\u200D\u200C\u200D\u200C\u200C\u200D\u200B\u200B\u200D\u200C\u200D\u200C\u200D\u200B\u200D\u200C\u200C\u200B\u200C\u206ACheck out BAS\u206A\u206A
470
473
  RESOURCES_CARD_LINK_THEME_DESIGNER=\u206A\u206A\u206A\u200C\u200C\u200D\u200C\u200D\u200D\u200C\u200C\u200D\u200C\u200C\u200C\u200D\u200B\u200B\u200B\u200C\u200C\u200B\u200B\u200D\u200D\u200D\u200C\u200C\u200D\u200D\u200D\u200C\u200B\u200B\u200D\u200C\u200B\u200C\u200C\u200D\u200B\u200C\u200B\u206ACheck out UI theme designer\u206A\u206A
@@ -6,6 +6,7 @@
6
6
 
7
7
  sap.ui.define([
8
8
  "sap/ui/thirdparty/jquery",
9
+ "sap/ui/core/IconPool",
9
10
  "sap/ui/core/UIComponent",
10
11
  "sap/ui/Device",
11
12
  "sap/ui/documentation/sdk/model/models",
@@ -23,6 +24,7 @@ sap.ui.define([
23
24
  "sap/m/ColumnListItem"
24
25
  ], function(
25
26
  jQuery,
27
+ IconPool,
26
28
  UIComponent,
27
29
  Device,
28
30
  models,
@@ -55,6 +57,10 @@ sap.ui.define([
55
57
  init : function () {
56
58
 
57
59
  this._oErrorHandler = new ErrorHandler(this);
60
+ IconPool.registerFont({
61
+ fontFamily: "SAP-icons-TNT",
62
+ fontURI: sap.ui.require.toUrl("sap/tnt/themes/base/fonts/")
63
+ });
58
64
 
59
65
  // set the device model
60
66
  this.setModel(models.createDeviceModel(), "device");
@@ -1477,7 +1477,7 @@ sap.ui.define([
1477
1477
  // Handle the case when the user deletes the query and the search picker is open
1478
1478
  // Only on desktop, because on mobile we don't want to close the picker
1479
1479
  if (!sQuery && Device.system.desktop) {
1480
- if (this.oPicker.isOpen()) {
1480
+ if (this.oPicker && this.oPicker.isOpen()) {
1481
1481
  this.oPicker.close();
1482
1482
  }
1483
1483
 
@@ -35,6 +35,7 @@ sap.ui.define(
35
35
 
36
36
  return SampleController.extend("sap.ui.documentation.sdk.controller.Code", {
37
37
  constructor: function () {
38
+ SampleController.apply(this, arguments);
38
39
  this.onFileEditorFileChangeDebounced = _debounce(this.onFileEditorFileChangeDebounced, 500);
39
40
  },
40
41
 
@@ -20,6 +20,7 @@ sap.ui.define([
20
20
  * @alias sap.ui.documentation.sdk.controller.ErrorHandler
21
21
  */
22
22
  constructor : function (oComponent) {
23
+ UI5Object.call(this);
23
24
  this._oComponent = oComponent;
24
25
  this._oModel = oComponent.getModel();
25
26
  this._bMessageOpen = false;
@@ -409,10 +409,13 @@ sap.ui.define([
409
409
  });
410
410
 
411
411
  var fnLoadSettings = function(eMessage) {
412
+ if (!this._isMessageFromSampleIframe(eMessage)) {
413
+ return;
414
+ }
412
415
  fnCallback(eMessage);
413
416
  window.removeEventListener("message", fnLoadSettings);
414
417
  resolve();
415
- };
418
+ }.bind(this);
416
419
 
417
420
  window.addEventListener("message", fnLoadSettings);
418
421
 
@@ -680,6 +683,11 @@ sap.ui.define([
680
683
  return this.byId("page");
681
684
  },
682
685
 
686
+ _isMessageFromSampleIframe: function(eMessage) {
687
+ return eMessage.origin === this.getOwnerComponent()._sSampleIframeOrigin &&
688
+ eMessage.source === this._oHtmlControl.getDomRef().contentWindow;
689
+ },
690
+
683
691
  onMessage: function(eMessage) {
684
692
  var oModelData = this.oModel.getData();
685
693
 
@@ -687,10 +695,7 @@ sap.ui.define([
687
695
  return;
688
696
  }
689
697
 
690
- if (eMessage.origin !== this.getOwnerComponent()._sSampleIframeOrigin) {
691
- return;
692
- }
693
- if (eMessage.source !== this._oHtmlControl.getDomRef().contentWindow) {
698
+ if (!this._isMessageFromSampleIframe(eMessage)) {
694
699
  return;
695
700
  }
696
701