@openui5/sap.ui.documentation 1.146.0 → 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 (53) hide show
  1. package/REUSE.toml +0 -51
  2. package/THIRDPARTY.txt +0 -44
  3. package/package.json +7 -7
  4. package/src/sap/ui/documentation/.library +1 -1
  5. package/src/sap/ui/documentation/ObjectPageSection.js +108 -0
  6. package/src/sap/ui/documentation/ObjectPageSubSection.js +114 -15
  7. package/src/sap/ui/documentation/library.js +2 -2
  8. package/src/sap/ui/documentation/messagebundle.properties +12 -0
  9. package/src/sap/ui/documentation/messagebundle_en.properties +2 -2
  10. package/src/sap/ui/documentation/messagebundle_en_US_saprigi.properties +3 -0
  11. package/src/sap/ui/documentation/sdk/Component.js +6 -0
  12. package/src/sap/ui/documentation/sdk/controller/SubApiDetail.controller.js +41 -3
  13. package/src/sap/ui/documentation/sdk/controller/util/ResourcesInfo.js +5 -0
  14. package/src/sap/ui/documentation/sdk/cookieSettingsDialog/view/CookieSettingsDialog.fragment.xml +5 -5
  15. package/src/sap/ui/documentation/sdk/css/style.css +23 -0
  16. package/src/sap/ui/documentation/sdk/index.js +6 -0
  17. package/src/sap/ui/documentation/sdk/thirdparty/highlight.js/highlight.js +3 -3
  18. package/src/sap/ui/documentation/sdk/view/AboutDialog.fragment.xml +6 -6
  19. package/src/sap/ui/documentation/sdk/view/ApiDetailInitial.view.xml +2 -2
  20. package/src/sap/ui/documentation/sdk/view/ApiMaster.view.xml +6 -6
  21. package/src/sap/ui/documentation/sdk/view/App.view.xml +11 -11
  22. package/src/sap/ui/documentation/sdk/view/ChangeVersionDialog.fragment.xml +4 -4
  23. package/src/sap/ui/documentation/sdk/view/Code.view.xml +16 -16
  24. package/src/sap/ui/documentation/sdk/view/Controls.view.xml +2 -2
  25. package/src/sap/ui/documentation/sdk/view/ControlsMaster.view.xml +6 -6
  26. package/src/sap/ui/documentation/sdk/view/Entity.view.xml +3 -3
  27. package/src/sap/ui/documentation/sdk/view/FioriDevelopmentRowSAPUI5.fragment.xml +1 -1
  28. package/src/sap/ui/documentation/sdk/view/Footer.fragment.xml +2 -2
  29. package/src/sap/ui/documentation/sdk/view/FooterMaster.fragment.xml +1 -1
  30. package/src/sap/ui/documentation/sdk/view/GlobalSearchPicker.fragment.xml +6 -6
  31. package/src/sap/ui/documentation/sdk/view/Group.view.xml +1 -1
  32. package/src/sap/ui/documentation/sdk/view/LiveEditor.view.xml +4 -4
  33. package/src/sap/ui/documentation/sdk/view/News.view.xml +4 -4
  34. package/src/sap/ui/documentation/sdk/view/NewsPopover.fragment.xml +4 -4
  35. package/src/sap/ui/documentation/sdk/view/NotFound.view.xml +1 -1
  36. package/src/sap/ui/documentation/sdk/view/ReleaseDialog.fragment.xml +1 -1
  37. package/src/sap/ui/documentation/sdk/view/ReleaseNotes.view.xml +1 -1
  38. package/src/sap/ui/documentation/sdk/view/Resources.view.xml +24 -1
  39. package/src/sap/ui/documentation/sdk/view/Sample.view.xml +15 -15
  40. package/src/sap/ui/documentation/sdk/view/SampleNotFound.view.xml +2 -2
  41. package/src/sap/ui/documentation/sdk/view/SearchPage.view.xml +9 -9
  42. package/src/sap/ui/documentation/sdk/view/Sitemap.view.xml +1 -1
  43. package/src/sap/ui/documentation/sdk/view/SubApiDetail.view.xml +73 -60
  44. package/src/sap/ui/documentation/sdk/view/TopicDetail.view.xml +3 -3
  45. package/src/sap/ui/documentation/sdk/view/TopicDetailInitial.view.xml +4 -4
  46. package/src/sap/ui/documentation/sdk/view/TopicMaster.view.xml +5 -5
  47. package/src/sap/ui/documentation/sdk/view/VersionNotFound.view.xml +3 -3
  48. package/src/sap/ui/documentation/sdk/view/Welcome.view.xml +13 -13
  49. package/src/sap/ui/documentation/sdk/view/WelcomeCustomRowOpenUI5.fragment.xml +1 -1
  50. package/src/sap/ui/documentation/sdk/view/appSettingsDialog.fragment.xml +2 -2
  51. package/src/sap/ui/documentation/sdk/view/globalSettingsDialog.fragment.xml +2 -2
  52. package/src/sap/ui/documentation/sdk/view/viewSettingsDialog.fragment.xml +1 -1
  53. package/src/sap/ui/documentation/sdk/view/warningSampleDialog.fragment.xml +1 -1
package/REUSE.toml CHANGED
@@ -613,57 +613,6 @@ SPDX-License-Identifier = "MIT"
613
613
  SPDX-FileComment = "these files belong to: hammer.js"
614
614
 
615
615
 
616
- # Library: sap.ui.webc.common:
617
-
618
- [[annotations]]
619
- path = [
620
- "src/sap.ui.webc.common/src/sap/ui/webc/common/thirdparty/base/**",
621
- "src/sap.ui.webc.common/src/sap/ui/webc/common/thirdparty/theming/**",
622
- "src/sap.ui.webc.common/src/sap/ui/webc/common/thirdparty/localization/**",
623
- "src/sap.ui.webc.common/src/sap/ui/webc/common/thirdparty/icons/**",
624
- "src/sap.ui.webc.common/src/sap/ui/webc/common/thirdparty/icons-tnt/**",
625
- "src/sap.ui.webc.common/src/sap/ui/webc/common/thirdparty/icons-business-suite/**"
626
- ]
627
- precedence = "aggregate"
628
- SPDX-FileCopyrightText = "SAP"
629
- SPDX-License-Identifier = "Apache-2.0"
630
- SPDX-FileComment = "these files belong to: UI5 Web Components"
631
-
632
- [[annotations]]
633
- path = "src/sap.ui.webc.common/src/sap/ui/webc/common/thirdparty/lit-html/**"
634
- precedence = "aggregate"
635
- SPDX-FileCopyrightText = "Google LLC"
636
- SPDX-License-Identifier = "BSD-3-Clause"
637
- SPDX-FileComment = "these files belong to: lit-html"
638
-
639
-
640
- # Library: sap.ui.webc.fiori:
641
-
642
- [[annotations]]
643
- path = "src/sap.ui.webc.fiori/src/sap/ui/webc/fiori/thirdparty/**"
644
- precedence = "aggregate"
645
- SPDX-FileCopyrightText = "SAP"
646
- SPDX-License-Identifier = "Apache-2.0"
647
- SPDX-FileComment = "these files belong to: UI5 Web Components"
648
-
649
- [[annotations]]
650
- path = "src/sap.ui.webc.fiori/src/sap/ui/webc/fiori/lib/zxing.js"
651
- precedence = "aggregate"
652
- SPDX-FileCopyrightText = "2005 Sun Microsystems, Inc.; 2010-2014 University of Manchester; 2010-2015 Stian Soiland-Reyes; 2015 Peter Hull"
653
- SPDX-License-Identifier = "Apache-2.0"
654
- SPDX-FileComment = "these files belong to: ZXing"
655
-
656
-
657
- # Library: sap.ui.webc.main:
658
-
659
- [[annotations]]
660
- path = "src/sap.ui.webc.main/src/sap/ui/webc/main/thirdparty/**"
661
- precedence = "aggregate"
662
- SPDX-FileCopyrightText = "SAP"
663
- SPDX-License-Identifier = "Apache-2.0"
664
- SPDX-FileComment = "these files belong to: UI5 Web Components"
665
-
666
-
667
616
  # Outside of Libraries:
668
617
 
669
618
  [[annotations]]
package/THIRDPARTY.txt CHANGED
@@ -446,50 +446,6 @@ License Text: https://github.com/UI5/openui5/blob/master/LICENSES/MIT.txt
446
446
  Contained in: src/sap.ui.mdc/test/sap/ui/mdc/demokit/sample/Chart/ChartJS/control/hammerjs.js
447
447
 
448
448
 
449
- Library: sap.ui.webc.common:
450
-
451
- Component: UI5 Web Components, version: 1.18.0
452
- Copyright: SAP
453
- License: Apache-2.0
454
- License Text: https://github.com/UI5/openui5/blob/master/LICENSES/Apache-2.0.txt
455
- Contained in: src/sap.ui.webc.common/src/sap/ui/webc/common/thirdparty/base/**
456
- src/sap.ui.webc.common/src/sap/ui/webc/common/thirdparty/theming/**
457
- src/sap.ui.webc.common/src/sap/ui/webc/common/thirdparty/localization/**
458
- src/sap.ui.webc.common/src/sap/ui/webc/common/thirdparty/icons/**
459
- src/sap.ui.webc.common/src/sap/ui/webc/common/thirdparty/icons-tnt/**
460
- src/sap.ui.webc.common/src/sap/ui/webc/common/thirdparty/icons-business-suite/**
461
-
462
- Component: lit-html, version: 2.2.2
463
- Copyright: Google LLC
464
- License: BSD-3-Clause
465
- License Text: https://github.com/UI5/openui5/blob/master/LICENSES/BSD-3-Clause.txt
466
- Contained in: src/sap.ui.webc.common/src/sap/ui/webc/common/thirdparty/lit-html/**
467
-
468
-
469
- Library: sap.ui.webc.fiori:
470
-
471
- Component: UI5 Web Components, version: 1.18.0
472
- Copyright: SAP
473
- License: Apache-2.0
474
- License Text: https://github.com/UI5/openui5/blob/master/LICENSES/Apache-2.0.txt
475
- Contained in: src/sap.ui.webc.fiori/src/sap/ui/webc/fiori/thirdparty/**
476
-
477
- Component: ZXing, version: 0.17.1
478
- Copyright: 2005 Sun Microsystems, Inc.; 2010-2014 University of Manchester; 2010-2015 Stian Soiland-Reyes; 2015 Peter Hull
479
- License: Apache-2.0
480
- License Text: https://github.com/UI5/openui5/blob/master/LICENSES/Apache-2.0.txt
481
- Contained in: src/sap.ui.webc.fiori/src/sap/ui/webc/fiori/lib/zxing.js
482
-
483
-
484
- Library: sap.ui.webc.main:
485
-
486
- Component: UI5 Web Components, version: 1.18.0
487
- Copyright: SAP
488
- License: Apache-2.0
489
- License Text: https://github.com/UI5/openui5/blob/master/LICENSES/Apache-2.0.txt
490
- Contained in: src/sap.ui.webc.main/src/sap/ui/webc/main/thirdparty/**
491
-
492
-
493
449
  Outside of Libraries:
494
450
 
495
451
  Component: JSDoc 3, version: 3.6.7
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openui5/sap.ui.documentation",
3
- "version": "1.146.0",
3
+ "version": "1.147.0",
4
4
  "description": "OpenUI5 UI Library sap.ui.documentation",
5
5
  "author": "SAP SE (https://www.sap.com)",
6
6
  "license": "Apache-2.0",
@@ -14,11 +14,11 @@
14
14
  "url": "https://github.com/UI5/openui5.git"
15
15
  },
16
16
  "dependencies": {
17
- "@openui5/sap.m": "1.146.0",
18
- "@openui5/sap.ui.core": "1.146.0",
19
- "@openui5/sap.ui.layout": "1.146.0",
20
- "@openui5/themelib_sap_belize": "1.146.0",
21
- "@openui5/themelib_sap_fiori_3": "1.146.0",
22
- "@openui5/themelib_sap_horizon": "1.146.0"
17
+ "@openui5/sap.m": "1.147.0",
18
+ "@openui5/sap.ui.core": "1.147.0",
19
+ "@openui5/sap.ui.layout": "1.147.0",
20
+ "@openui5/themelib_sap_belize": "1.147.0",
21
+ "@openui5/themelib_sap_fiori_3": "1.147.0",
22
+ "@openui5/themelib_sap_horizon": "1.147.0"
23
23
  }
24
24
  }
@@ -6,7 +6,7 @@
6
6
  <copyright>OpenUI5
7
7
  * (c) Copyright 2026 SAP SE or an SAP affiliate company.
8
8
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.</copyright>
9
- <version>1.146.0</version>
9
+ <version>1.147.0</version>
10
10
 
11
11
  <documentation>SAPUI5 library for the Demokit 2.0.</documentation>
12
12
 
@@ -0,0 +1,108 @@
1
+
2
+ /*!\n * OpenUI5
3
+ * (c) Copyright 2026 SAP SE or an SAP affiliate company.
4
+ * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.\n */
5
+ sap.ui.define([
6
+ 'sap/uxap/ObjectPageSection',
7
+ 'sap/uxap/ObjectPageSectionRenderer',
8
+ 'sap/ui/core/Icon',
9
+ 'sap/ui/core/RenderManager',
10
+ 'sap/ui/core/Core'
11
+ ], function(ObjectPageSection, ObjectPageSectionRenderer, Icon, RenderManager, Core) {
12
+ "use strict";
13
+
14
+ /**
15
+ * @class
16
+ * Custom ObjectPageSection control which supports a showBookmarkIcon property.
17
+ * When showBookmarkIcon=true, a chain-link icon is injected into the DOM right after
18
+ * the section title in onAfterRendering — no renderer override needed.
19
+ * Clicking the icon fires the bookmarkIconPress event.
20
+ * @extends sap.uxap.ObjectPageSection
21
+ * @private
22
+ * @ui5-restricted sdk
23
+ */
24
+ var SDKObjectPageSection = ObjectPageSection.extend("sap.ui.documentation.ObjectPageSection", {
25
+ metadata: {
26
+ library: "sap.ui.documentation",
27
+ properties: {
28
+ /**
29
+ * When true, a chain-link icon is injected after the section title.
30
+ * Clicking the icon fires the bookmarkIconPress event.
31
+ */
32
+ showBookmarkIcon: { type: "boolean", defaultValue: false }
33
+ },
34
+ aggregations: {
35
+ /**
36
+ * Internal bookmark icon. The Section is the ManagedObject parent,
37
+ * so lifecycle (destroy) is handled automatically.
38
+ * Not intended for external use.
39
+ */
40
+ _bookmarkIcon: { type: "sap.ui.core.Icon", multiple: false, visibility: "hidden" }
41
+ },
42
+ events: {
43
+ /**
44
+ * Fired when the chain-link icon is pressed. Use to copy the section URL to clipboard.
45
+ */
46
+ bookmarkIconPress: {}
47
+ }
48
+ },
49
+ renderer: ObjectPageSectionRenderer
50
+ });
51
+
52
+ /**
53
+ * After the base renderer writes the section DOM, injects the bookmark icon
54
+ * right after the title element using a RenderManager flush into a placeholder span.
55
+ * This avoids copying/maintaining the ObjectPageSectionRenderer.
56
+ * @override
57
+ */
58
+ SDKObjectPageSection.prototype.onAfterRendering = function () {
59
+ ObjectPageSection.prototype.onAfterRendering?.apply(this, arguments);
60
+
61
+ if (!this.getShowBookmarkIcon() || !this.getTitleVisible()) {
62
+ return;
63
+ }
64
+
65
+ var oTitleControl = this._getTitleControl();
66
+ var oTitleDom = oTitleControl && oTitleControl.getDomRef();
67
+ if (!oTitleDom) {
68
+ return;
69
+ }
70
+
71
+ // Insert a placeholder <span> directly after the title element.
72
+ // The base renderer recreates the section DOM on every render cycle, so the
73
+ // placeholder is also recreated fresh each time (no stale-DOM risk).
74
+ var oPlaceholder = document.createElement("span");
75
+ oTitleDom.parentNode.insertBefore(oPlaceholder, oTitleDom.nextSibling);
76
+
77
+ // Render the icon into the placeholder (RenderManager.flush replaces
78
+ // the placeholder's children with the icon's DOM).
79
+ var oRm = new RenderManager().getInterface();
80
+ oRm.renderControl(this._getBookmarkIcon());
81
+ oRm.flush(oPlaceholder, true);
82
+ oRm.destroy();
83
+ };
84
+
85
+ /**
86
+ * Lazy getter for the internal bookmark icon.
87
+ * Creates the icon on first call and stores it in the _bookmarkIcon hidden aggregation.
88
+ * @returns {sap.ui.core.Icon}
89
+ * @private
90
+ */
91
+ SDKObjectPageSection.prototype._getBookmarkIcon = function () {
92
+ var oIcon = this.getAggregation("_bookmarkIcon");
93
+ if (!oIcon) {
94
+ oIcon = new Icon({
95
+ src: "sap-icon://chain-link",
96
+ tooltip: Core.getLibraryResourceBundle("sap.ui.documentation").getText("API_DETAIL_BOOKMARK_TOOLTIP"),
97
+ decorative: false,
98
+ press: function () {
99
+ this.fireBookmarkIconPress();
100
+ }.bind(this)
101
+ }).addStyleClass("sapUiDocSectionLinkIcon");
102
+ this.setAggregation("_bookmarkIcon", oIcon, true); // suppress invalidate
103
+ }
104
+ return oIcon;
105
+ };
106
+
107
+ return SDKObjectPageSection;
108
+ });
@@ -1,4 +1,3 @@
1
-
2
1
  /*!
3
2
  * OpenUI5
4
3
  * (c) Copyright 2026 SAP SE or an SAP affiliate company.
@@ -7,24 +6,123 @@
7
6
  sap.ui.define([
8
7
  'sap/ui/core/Control',
9
8
  'sap/uxap/ObjectPageSubSection',
10
- 'sap/uxap/ObjectPageSubSectionRenderer'
11
- ], function(Control, ObjectPageSubSection, ObjectPageSubSectionRenderer) {
9
+ 'sap/uxap/ObjectPageSubSectionRenderer',
10
+ 'sap/m/OverflowToolbarLayoutData',
11
+ 'sap/m/library',
12
+ 'sap/ui/core/Icon',
13
+ 'sap/ui/core/Core'
14
+ ], function(Control, ObjectPageSubSection, ObjectPageSubSectionRenderer, OverflowToolbarLayoutData, mobileLibrary, Icon, Core) {
12
15
  "use strict";
13
16
 
17
+ var OverflowToolbarPriority = mobileLibrary.OverflowToolbarPriority;
18
+
14
19
  /**
15
20
  * @class
16
- * Custom ObjectPageSubSection control which internally does not uses Grid control.
21
+ * Custom ObjectPageSubSection control which:
22
+ * - Does not use the Grid control internally (uses a simple Container instead)
23
+ * - Supports a showBookmarkIcon property: when true, a chain-link icon is inserted
24
+ * into the internal OverflowToolbar right after the title. Clicking the icon
25
+ * fires the bookmarkIconPress event.
26
+ *
17
27
  * @extends sap.uxap.ObjectPageSubSection
18
28
  * @private
19
29
  * @ui5-restricted sdk
20
30
  */
21
31
  var SDKObjectPageSubSection = ObjectPageSubSection.extend("sap.ui.documentation.ObjectPageSubSection", {
22
32
  metadata: {
23
- library: "sap.ui.documentation"
33
+ library: "sap.ui.documentation",
34
+ properties: {
35
+ /**
36
+ * When true, a chain-link icon is rendered inside the subsection toolbar
37
+ * right after the title. Clicking the icon fires the bookmarkIconPress event.
38
+ */
39
+ showBookmarkIcon: { type: "boolean", defaultValue: false }
40
+ },
41
+ events: {
42
+ /**
43
+ * Fired when the chain-link icon is pressed. Use to copy the subsection URL to clipboard.
44
+ */
45
+ bookmarkIconPress: {}
46
+ }
24
47
  },
25
48
  renderer: ObjectPageSubSectionRenderer
26
49
  });
27
50
 
51
+ /**
52
+ * Override to create and insert the bookmark icon into the OverflowToolbar when
53
+ * showBookmarkIcon is set to true. The icon is NOT stored in a ManagedObject aggregation
54
+ * on this control - it lives only in the toolbar (its true parent), with a plain JS
55
+ * reference kept in this._oBookmarkIcon. The toolbar (a hidden child of this SubSection
56
+ * via _headerToolbar) owns the icon lifecycle.
57
+ * This mirrors how sap.uxap.ObjectPageSubSection handles its "actions" aggregation.
58
+ * @override
59
+ */
60
+ SDKObjectPageSubSection.prototype.setShowBookmarkIcon = function (bValue) {
61
+ this.setProperty("showBookmarkIcon", bValue, true); // suppress invalidate — toolbar insertion handles rendering
62
+
63
+ if (bValue) {
64
+ if (!this._oBookmarkIcon) {
65
+ this._oBookmarkIcon = new Icon({
66
+ src: "sap-icon://chain-link",
67
+ tooltip: Core.getLibraryResourceBundle("sap.ui.documentation").getText("API_DETAIL_BOOKMARK_TOOLTIP"),
68
+ decorative: false,
69
+ layoutData: new OverflowToolbarLayoutData({
70
+ priority: OverflowToolbarPriority.NeverOverflow
71
+ }),
72
+ press: function () {
73
+ this.fireBookmarkIconPress();
74
+ }.bind(this)
75
+ }).addStyleClass("sapUiDocSectionLinkIcon");
76
+ }
77
+ // Insert at index 1: after Title (0), before ToolbarSpacer (was 1, now shifts to 2).
78
+ // insertAggregation reparents the icon to the toolbar; the toolbar (child of this
79
+ // SubSection via _headerToolbar) then owns the icon lifecycle.
80
+ this._getHeaderToolbar()?.insertAggregation("content", this._oBookmarkIcon, 1);
81
+ } else if (this._oBookmarkIcon) {
82
+ // Remove from toolbar but keep the instance — re-inserted if showBookmarkIcon is set to true again
83
+ this._getHeaderToolbar()?.removeContent(this._oBookmarkIcon);
84
+ }
85
+
86
+ return this;
87
+ };
88
+
89
+ /**
90
+ * Clean up the bookmark icon on control exit.
91
+ * The icon may be detached from the toolbar (showBookmarkIcon=false) so we destroy it explicitly.
92
+ * @override
93
+ */
94
+ SDKObjectPageSubSection.prototype.exit = function () {
95
+ if (this._oBookmarkIcon) {
96
+ this._oBookmarkIcon.destroy();
97
+ this._oBookmarkIcon = null;
98
+ }
99
+ ObjectPageSubSection.prototype.exit?.apply(this, arguments);
100
+ };
101
+
102
+ // -----------------------------------------------------------------------
103
+ // Action aggregation overrides
104
+ // -----------------------------------------------------------------------
105
+
106
+ // Number of fixed toolbar slots when showBookmarkIcon=true:
107
+ // [Title(0), BookmarkIcon(1), ToolbarSpacer(2)] = 3
108
+ SDKObjectPageSubSection.NUMBER_OF_ADDITIONAL_ACTIONS_BOOKMARKABLE = 3;
109
+
110
+ /**
111
+ * Returns the number of fixed toolbar slots before user-added actions.
112
+ * Overrides the base to account for the optional bookmark icon slot.
113
+ * @returns {int}
114
+ * @override
115
+ */
116
+ SDKObjectPageSubSection.prototype._getActionsOffset = function () {
117
+ return this.getShowBookmarkIcon()
118
+ ? SDKObjectPageSubSection.NUMBER_OF_ADDITIONAL_ACTIONS_BOOKMARKABLE
119
+ : ObjectPageSubSection.NUMBER_OF_ADDITIONAL_ACTIONS;
120
+ };
121
+
122
+ // -----------------------------------------------------------------------
123
+ // Grid override - replace with simple Container
124
+ // -----------------------------------------------------------------------
125
+
28
126
  var Container = Control.extend("sap.ui.documentation.Container", {
29
127
  metadata: {
30
128
  library: "sap.ui.documentation",
@@ -37,19 +135,20 @@ sap.ui.define([
37
135
  apiVersion: 2,
38
136
 
39
137
  render: function (oRm, oControl) {
40
- var aContent = oControl.getContent(),
41
- iLen,
42
- i;
138
+ var aContent = oControl.getContent(),
139
+ iLen,
140
+ i;
43
141
 
44
- oRm.openStart("div", oControl).openEnd();
142
+ oRm.openStart("div", oControl).openEnd();
45
143
 
46
- for (i = 0, iLen = aContent.length; i < iLen; i++) {
47
- oRm.renderControl(aContent[i]);
48
- }
144
+ for (i = 0, iLen = aContent.length; i < iLen; i++) {
145
+ oRm.renderControl(aContent[i]);
146
+ }
49
147
 
50
- oRm.close("div");
148
+ oRm.close("div");
149
+ }
51
150
  }
52
- }});
151
+ });
53
152
 
54
153
  SDKObjectPageSubSection.prototype._getGrid = function () {
55
154
  if (!this.getAggregation("_grid")) {
@@ -62,4 +161,4 @@ sap.ui.define([
62
161
  };
63
162
 
64
163
  return SDKObjectPageSubSection;
65
- });
164
+ });
@@ -25,14 +25,14 @@ sap.ui.define([
25
25
  * @namespace
26
26
  * @alias sap.ui.documentation
27
27
  * @author SAP SE
28
- * @version 1.146.0
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.146.0',
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
@@ -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");
@@ -25,6 +25,7 @@ sap.ui.define([
25
25
  "sap/m/ObjectStatus",
26
26
  "sap/m/Popover",
27
27
  "sap/m/library",
28
+ "sap/m/MessageToast",
28
29
  "sap/ui/core/library",
29
30
  "sap/m/CustomListItem",
30
31
  "sap/m/List",
@@ -32,11 +33,12 @@ sap.ui.define([
32
33
  "sap/ui/dom/includeScript",
33
34
  "sap/uxap/ObjectPageSection",
34
35
  "sap/ui/documentation/ObjectPageSubSection",
35
- "sap/ui/core/HTML"
36
+ "sap/ui/core/HTML",
37
+ "sap/ui/core/Core"
36
38
  ], function (jQuery, Log, Fragment, APIInfo, BaseController, ToggleFullScreenHandler,
37
39
  formatter, Row, ParamText, JSDocType, JSDocText, Image, Label, Link, Text, HBox, ObjectAttribute, ObjectStatus, Popover,
38
- library, coreLibrary, CustomListItem, List, includeStylesheet, includeScript,
39
- ObjectPageSection, ObjectPageSubSection, HTML) {
40
+ library, MessageToast, coreLibrary, CustomListItem, List, includeStylesheet, includeScript,
41
+ ObjectPageSection, ObjectPageSubSection, HTML, Core) {
40
42
  "use strict";
41
43
 
42
44
  // shortcut for sap.m.FlexWrap
@@ -268,6 +270,42 @@ sap.ui.define([
268
270
  ToggleFullScreenHandler.updateMode(oEvent, this._oContainerView, this._oContainerController);
269
271
  },
270
272
 
273
+ onSectionLinkIconPress: function (oEvent) {
274
+ var oSection = oEvent.getSource();
275
+ this._copyBookmarkURL(oSection, null);
276
+ },
277
+
278
+ onSubSectionLinkIconPress: function (oEvent) {
279
+ // SubSection fires the event directly - one getParent() to reach the Section
280
+ var oSubSection = oEvent.getSource(),
281
+ oSection = oSubSection.getParent();
282
+ this._copyBookmarkURL(oSection, oSubSection);
283
+ },
284
+
285
+ /**
286
+ * Updates the browser URL to reflect the given section/subsection and copies
287
+ * it to the clipboard, then scrolls to the target.
288
+ * @param {sap.uxap.ObjectPageSection} oSection
289
+ * @param {sap.uxap.ObjectPageSubSection|null} oSubSection null for section-only links
290
+ * @private
291
+ */
292
+ _copyBookmarkURL: function (oSection, oSubSection) {
293
+ var oI18n = Core.getLibraryResourceBundle("sap.ui.documentation"),
294
+ oTarget = oSubSection || oSection;
295
+
296
+ this._modifyURL(oSection, oSubSection, true);
297
+
298
+ if (navigator.clipboard) {
299
+ navigator.clipboard.writeText(window.location.href).then(function () {
300
+ MessageToast.show(oI18n.getText("API_DETAIL_BOOKMARK_COPIED"));
301
+ }).catch(function () {
302
+ MessageToast.show(oI18n.getText("API_DETAIL_BOOKMARK_URL_UPDATED"));
303
+ });
304
+ }
305
+
306
+ this._objectPage.scrollToSection(oTarget.getId(), 250);
307
+ },
308
+
271
309
  onBorrowedPropCheckboxClick: function (oEvent) {
272
310
  var bChecked = oEvent.getParameter("selected");
273
311
 
@@ -54,6 +54,11 @@ sap.ui.define([],
54
54
  "text": "UI5 MCP server",
55
55
  "href": "https://github.com/UI5/mcp-server"
56
56
  },
57
+ {
58
+ "id": "fioriMcpServer",
59
+ "text": "SAP Fiori MCP server",
60
+ "href": "https://github.com/SAP/open-ux-tools/tree/main/packages/fiori-mcp-server"
61
+ },
57
62
  {
58
63
  "id": "businessAppStudio",
59
64
  "text": "SAP Business Application Studio",
@@ -30,19 +30,19 @@
30
30
  </custom:DivContainer>
31
31
  </content>
32
32
  <buttons>
33
- <Button text="{i18n>COOKIE_SETTINGS_DIALOG_FUNCTIONAL_COOKIES_ACCEPT_ALL}" type="Emphasized" press="onAcceptAllCookies" visible="{=! ${cookieData>/showCookieDetails} }">
33
+ <Button text="{i18n>COOKIE_SETTINGS_DIALOG_FUNCTIONAL_COOKIES_ACCEPT_ALL}" type="Emphasized" press=".onAcceptAllCookies" visible="{=! ${cookieData>/showCookieDetails} }">
34
34
  <layoutData>
35
35
  <OverflowToolbarLayoutData priority="NeverOverflow"/>
36
36
  </layoutData>
37
37
  </Button>
38
- <Button text="{i18n>COOKIE_SETTINGS_DIALOG_FUNCTIONAL_COOKIES_SET_PREFERENCES}" id="btnSetPreferences" type="Ghost" press="showCookieDetails" visible="{= !${cookieData>/showCookieDetails} &amp;&amp; ${cookieData>/enableAdvancedSettings} }"></Button>
39
- <Button text="{i18n>COOKIE_SETTINGS_DIALOG_FUNCTIONAL_COOKIES_REJECT_ALL}" press="onRejectAllCookies" visible="{=! ${cookieData>/showCookieDetails} }">
38
+ <Button text="{i18n>COOKIE_SETTINGS_DIALOG_FUNCTIONAL_COOKIES_SET_PREFERENCES}" id="btnSetPreferences" type="Ghost" press=".showCookieDetails" visible="{= !${cookieData>/showCookieDetails} &amp;&amp; ${cookieData>/enableAdvancedSettings} }"></Button>
39
+ <Button text="{i18n>COOKIE_SETTINGS_DIALOG_FUNCTIONAL_COOKIES_REJECT_ALL}" press=".onRejectAllCookies" visible="{=! ${cookieData>/showCookieDetails} }">
40
40
  <layoutData>
41
41
  <OverflowToolbarLayoutData priority="NeverOverflow"/>
42
42
  </layoutData>
43
43
  </Button>
44
- <Button text="{i18n>COOKIE_SETTINGS_DIALOG_FUNCTIONAL_COOKIES_SAVE_PREFERENCES}" id="btnSavePreferences" type="Emphasized" press="onSaveCookies" visible="{cookieData>/showCookieDetails}"></Button>
45
- <Button text="{i18n>COOKIE_SETTINGS_DIALOG_CANCEL_BTN}" press="onCancelPress" visible="{= ${cookieData>/showCookieDetails} }"></Button>
44
+ <Button text="{i18n>COOKIE_SETTINGS_DIALOG_FUNCTIONAL_COOKIES_SAVE_PREFERENCES}" id="btnSavePreferences" type="Emphasized" press=".onSaveCookies" visible="{cookieData>/showCookieDetails}"></Button>
45
+ <Button text="{i18n>COOKIE_SETTINGS_DIALOG_CANCEL_BTN}" press=".onCancelPress" visible="{= ${cookieData>/showCookieDetails} }"></Button>
46
46
  </buttons>
47
47
  </Dialog>
48
48
  </core:FragmentDefinition>