@sapui5/sap.fe.controls 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 (81) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/controls/.library +2 -2
  3. package/src/sap/fe/controls/AINotice.js +146 -0
  4. package/src/sap/fe/controls/AINotice.tsx +111 -0
  5. package/src/sap/fe/controls/AiNoticeHelper.js +55 -0
  6. package/src/sap/fe/controls/AiNoticeHelper.tsx +60 -0
  7. package/src/sap/fe/controls/easyFill/EasyFillPlaceholder.js +1 -1
  8. package/src/sap/fe/controls/easyFilter/EasyFilterBarContainer.js +17 -4
  9. package/src/sap/fe/controls/easyFilter/EasyFilterBarContainer.tsx +14 -1
  10. package/src/sap/fe/controls/easyFilter/EasyFilterInput.js +1 -1
  11. package/src/sap/fe/controls/easyFilter/ErrorMessageHandler.js +1 -1
  12. package/src/sap/fe/controls/easyFilter/PXFeedback.js +1 -1
  13. package/src/sap/fe/controls/easyFilter/ShellHistoryProvider.js +1 -1
  14. package/src/sap/fe/controls/easyFilter/Token.js +1 -1
  15. package/src/sap/fe/controls/easyFilter/innerControls/BaseFactory.js +1 -1
  16. package/src/sap/fe/controls/easyFilter/innerControls/CalendarFactory.js +1 -1
  17. package/src/sap/fe/controls/easyFilter/innerControls/MenuWithCheckBoxFactory.js +1 -1
  18. package/src/sap/fe/controls/easyFilter/innerControls/MenuWithSingleSelectFactory.js +1 -1
  19. package/src/sap/fe/controls/easyFilter/innerControls/TimeFactory.js +1 -1
  20. package/src/sap/fe/controls/easyFilter/innerControls/ValueHelpPreviewFactory.js +1 -1
  21. package/src/sap/fe/controls/easyFilter/utils.js +1 -1
  22. package/src/sap/fe/controls/inlineEdit/InlineEditIndicator.js +1 -1
  23. package/src/sap/fe/controls/library.js +2 -2
  24. package/src/sap/fe/controls/messagebundle.properties +15 -1
  25. package/src/sap/fe/controls/messagebundle_ar.properties +14 -6
  26. package/src/sap/fe/controls/messagebundle_bg.properties +14 -6
  27. package/src/sap/fe/controls/messagebundle_ca.properties +14 -6
  28. package/src/sap/fe/controls/messagebundle_cnr.properties +14 -6
  29. package/src/sap/fe/controls/messagebundle_cs.properties +14 -6
  30. package/src/sap/fe/controls/messagebundle_cy.properties +14 -6
  31. package/src/sap/fe/controls/messagebundle_da.properties +14 -6
  32. package/src/sap/fe/controls/messagebundle_de.properties +14 -6
  33. package/src/sap/fe/controls/messagebundle_el.properties +14 -6
  34. package/src/sap/fe/controls/messagebundle_en.properties +14 -6
  35. package/src/sap/fe/controls/messagebundle_en_GB.properties +14 -6
  36. package/src/sap/fe/controls/messagebundle_en_US_saprigi.properties +14 -6
  37. package/src/sap/fe/controls/messagebundle_es.properties +14 -6
  38. package/src/sap/fe/controls/messagebundle_es_MX.properties +14 -6
  39. package/src/sap/fe/controls/messagebundle_et.properties +14 -6
  40. package/src/sap/fe/controls/messagebundle_fi.properties +14 -6
  41. package/src/sap/fe/controls/messagebundle_fr.properties +14 -6
  42. package/src/sap/fe/controls/messagebundle_fr_CA.properties +14 -6
  43. package/src/sap/fe/controls/messagebundle_hi.properties +14 -6
  44. package/src/sap/fe/controls/messagebundle_hr.properties +14 -6
  45. package/src/sap/fe/controls/messagebundle_hu.properties +14 -6
  46. package/src/sap/fe/controls/messagebundle_id.properties +14 -6
  47. package/src/sap/fe/controls/messagebundle_it.properties +14 -6
  48. package/src/sap/fe/controls/messagebundle_iw.properties +14 -6
  49. package/src/sap/fe/controls/messagebundle_ja.properties +14 -6
  50. package/src/sap/fe/controls/messagebundle_kk.properties +14 -6
  51. package/src/sap/fe/controls/messagebundle_ko.properties +14 -6
  52. package/src/sap/fe/controls/messagebundle_lt.properties +14 -6
  53. package/src/sap/fe/controls/messagebundle_lv.properties +14 -6
  54. package/src/sap/fe/controls/messagebundle_mk.properties +14 -6
  55. package/src/sap/fe/controls/messagebundle_ms.properties +14 -6
  56. package/src/sap/fe/controls/messagebundle_nl.properties +14 -6
  57. package/src/sap/fe/controls/messagebundle_no.properties +14 -6
  58. package/src/sap/fe/controls/messagebundle_pl.properties +14 -6
  59. package/src/sap/fe/controls/messagebundle_pt.properties +14 -6
  60. package/src/sap/fe/controls/messagebundle_pt_PT.properties +14 -6
  61. package/src/sap/fe/controls/messagebundle_ro.properties +14 -6
  62. package/src/sap/fe/controls/messagebundle_ru.properties +14 -6
  63. package/src/sap/fe/controls/messagebundle_sh.properties +14 -6
  64. package/src/sap/fe/controls/messagebundle_sk.properties +14 -6
  65. package/src/sap/fe/controls/messagebundle_sl.properties +14 -6
  66. package/src/sap/fe/controls/messagebundle_sr.properties +14 -6
  67. package/src/sap/fe/controls/messagebundle_sv.properties +14 -6
  68. package/src/sap/fe/controls/messagebundle_th.properties +14 -6
  69. package/src/sap/fe/controls/messagebundle_tr.properties +14 -6
  70. package/src/sap/fe/controls/messagebundle_uk.properties +14 -6
  71. package/src/sap/fe/controls/messagebundle_vi.properties +14 -6
  72. package/src/sap/fe/controls/messagebundle_zh_CN.properties +14 -6
  73. package/src/sap/fe/controls/messagebundle_zh_TW.properties +14 -6
  74. package/src/sap/fe/controls/shortcuts/ShortcutExplanationProvider.js +1 -1
  75. package/src/sap/fe/controls/shortcuts/popup/ShortcutTool.js +1 -1
  76. package/src/sap/fe/controls/themes/base/EasyFill.less +18 -0
  77. package/src/sap/fe/controls/themes/base/EasyFilter.less +19 -3
  78. package/src/sap/fe/controls/themes/base/InlineEditIndicator.less +9 -1
  79. package/src/sap/fe/controls/themes/base/QuickView.less +6 -1
  80. package/src/sap/fe/controls/themes/base/Token.less +21 -9
  81. package/src/sap/fe/controls/themes/base/UnitCurrencyHbox.less +6 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.fe.controls",
3
- "version": "1.145.1",
3
+ "version": "1.147.0",
4
4
  "description": "SAPUI5 Library sap.fe.controls",
5
5
  "keywords": [
6
6
  "sapui5",
@@ -4,9 +4,9 @@
4
4
  <vendor>SAP SE</vendor>
5
5
  <copyright>
6
6
  SAP UI development toolkit for HTML5 (SAPUI5)
7
- (c) Copyright 2009-2024 SAP SE. All rights reserved
7
+ (c) Copyright 2009-2026 SAP SE. All rights reserved
8
8
  </copyright>
9
- <version>1.145.1</version>
9
+ <version>1.147.0</version>
10
10
 
11
11
  <documentation>UI5 library: sap.fe.controls</documentation>
12
12
 
@@ -0,0 +1,146 @@
1
+ /*!
2
+ * SAP UI development toolkit for HTML5 (SAPUI5)
3
+ * (c) Copyright 2009-2026 SAP SE. All rights reserved
4
+ */
5
+ sap.ui.define(["sap/fe/base/BuildingBlockBase", "sap/fe/base/ClassSupport", "sap/m/Button", "sap/m/Label", "sap/m/Link", "sap/m/library", "sap/ui/core/Lib", "./AiNoticeHelper", "sap/fe/base/jsx-runtime/jsx"], function (BuildingBlockBase, ClassSupport, Button, Label, Link, library, Lib, AiNoticeHelper, _jsx) {
6
+ "use strict";
7
+
8
+ var _dec, _dec2, _dec3, _dec4, _dec5, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4;
9
+ var _exports = {};
10
+ var ButtonType = library.ButtonType;
11
+ var property = ClassSupport.property;
12
+ var defineUI5Class = ClassSupport.defineUI5Class;
13
+ var aggregation = ClassSupport.aggregation;
14
+ function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }
15
+ function _inheritsLoose(t, o) { t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o); }
16
+ function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
17
+ function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }
18
+ function _initializerWarningHelper(r, e) { throw Error("Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform."); }
19
+ /**
20
+ * Building block that displays a AI notice.
21
+ *
22
+ * It's used to display information related to AI features. This information is rendered either
23
+ * as a link if the aggregation popoverContent is defined or as a label if there is no aggregation popoverContent.
24
+ */
25
+ let AINotice = (_dec = defineUI5Class("sap.fe.controls.AINotice"), _dec2 = property({
26
+ type: "boolean",
27
+ isBindingInfo: true,
28
+ defaultValue: true
29
+ }), _dec3 = property({
30
+ type: "string",
31
+ defaultValue: "Link"
32
+ }), _dec4 = aggregation({
33
+ type: "sap.ui.core.Control",
34
+ multiple: true,
35
+ isDefault: true
36
+ }), _dec5 = property({
37
+ type: "string"
38
+ }), _dec(_class = (_class2 = /*#__PURE__*/function (_BuildingBlockBase) {
39
+ function AINotice(properties, others) {
40
+ var _this;
41
+ _this = _BuildingBlockBase.call(this, properties, others) || this;
42
+ _initializerDefineProperty(_this, "visible", _descriptor, _this);
43
+ /**
44
+ * The type of control to display
45
+ */
46
+ _initializerDefineProperty(_this, "type", _descriptor2, _this);
47
+ /**
48
+ * The content to display into the popover
49
+ * @public
50
+ */
51
+ _initializerDefineProperty(_this, "popoverContent", _descriptor3, _this);
52
+ /**
53
+ * The placement type of the popover
54
+ */
55
+ _initializerDefineProperty(_this, "placementType", _descriptor4, _this);
56
+ _this.resourceBundle = Lib.getResourceBundleFor("sap.fe.controls");
57
+ _this.content = _this.createContent();
58
+ return _this;
59
+ }
60
+
61
+ /**
62
+ * Handles the press event on the control.
63
+ * @param event The press event
64
+ */
65
+ _exports = AINotice;
66
+ _inheritsLoose(AINotice, _BuildingBlockBase);
67
+ var _proto = AINotice.prototype;
68
+ _proto.onPress = function onPress(event) {
69
+ if (this.popoverContent) {
70
+ AiNoticeHelper.generatePopover({
71
+ content: this.popoverContent,
72
+ placementType: this.placementType,
73
+ parent: event.getSource()
74
+ });
75
+ }
76
+ }
77
+
78
+ /**
79
+ * Returns the link or text depending on the popoverContent aggregation.
80
+ * @returns The control tree
81
+ */;
82
+ _proto.createLinkOrLabel = function createLinkOrLabel() {
83
+ const mainText = this.resourceBundle.getText("M_NOTICE_AI_TITLE");
84
+ return this.getAggregation("popoverContent") ? _jsx(Link, {
85
+ visible: this.visible,
86
+ text: mainText,
87
+ press: e => this.onPress(e)
88
+ }) : _jsx(Label, {
89
+ visible: this.visible,
90
+ text: mainText
91
+ });
92
+ }
93
+
94
+ /**
95
+ * Returns the button.
96
+ * @returns The button
97
+ */;
98
+ _proto.createButton = function createButton() {
99
+ return _jsx(Button, {
100
+ visible: this.visible,
101
+ icon: "sap-icon://ai",
102
+ type: ButtonType.Transparent,
103
+ text: this.resourceBundle.getText("M_NOTICE_AI_FILTER"),
104
+ press: e => this.onPress(e)
105
+ });
106
+ }
107
+
108
+ /**
109
+ * Returns the content of this building block.
110
+ * @returns The control tree
111
+ */;
112
+ _proto.createContent = function createContent() {
113
+ switch (this.type) {
114
+ case "Button":
115
+ return this.createButton();
116
+ case "Link":
117
+ default:
118
+ return this.createLinkOrLabel();
119
+ }
120
+ };
121
+ return AINotice;
122
+ }(BuildingBlockBase), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "visible", [_dec2], {
123
+ configurable: true,
124
+ enumerable: true,
125
+ writable: true,
126
+ initializer: null
127
+ }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "type", [_dec3], {
128
+ configurable: true,
129
+ enumerable: true,
130
+ writable: true,
131
+ initializer: null
132
+ }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, "popoverContent", [_dec4], {
133
+ configurable: true,
134
+ enumerable: true,
135
+ writable: true,
136
+ initializer: null
137
+ }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, "placementType", [_dec5], {
138
+ configurable: true,
139
+ enumerable: true,
140
+ writable: true,
141
+ initializer: null
142
+ }), _class2)) || _class);
143
+ _exports = AINotice;
144
+ return _exports;
145
+ }, false);
146
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBSU5vdGljZSIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwicHJvcGVydHkiLCJ0eXBlIiwiaXNCaW5kaW5nSW5mbyIsImRlZmF1bHRWYWx1ZSIsIl9kZWMzIiwiX2RlYzQiLCJhZ2dyZWdhdGlvbiIsIm11bHRpcGxlIiwiaXNEZWZhdWx0IiwiX2RlYzUiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2tCYXNlIiwicHJvcGVydGllcyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJyZXNvdXJjZUJ1bmRsZSIsIkxpYiIsImdldFJlc291cmNlQnVuZGxlRm9yIiwiY29udGVudCIsImNyZWF0ZUNvbnRlbnQiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwib25QcmVzcyIsImV2ZW50IiwicG9wb3ZlckNvbnRlbnQiLCJBaU5vdGljZUhlbHBlciIsImdlbmVyYXRlUG9wb3ZlciIsInBsYWNlbWVudFR5cGUiLCJwYXJlbnQiLCJnZXRTb3VyY2UiLCJjcmVhdGVMaW5rT3JMYWJlbCIsIm1haW5UZXh0IiwiZ2V0VGV4dCIsImdldEFnZ3JlZ2F0aW9uIiwiX2pzeCIsIkxpbmsiLCJ2aXNpYmxlIiwidGV4dCIsInByZXNzIiwiZSIsIkxhYmVsIiwiY3JlYXRlQnV0dG9uIiwiQnV0dG9uIiwiaWNvbiIsIkJ1dHRvblR5cGUiLCJUcmFuc3BhcmVudCIsIkJ1aWxkaW5nQmxvY2tCYXNlIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJBSU5vdGljZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgUmVzb3VyY2VCdW5kbGUgZnJvbSBcInNhcC9iYXNlL2kxOG4vUmVzb3VyY2VCdW5kbGVcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrQmFzZSBmcm9tIFwic2FwL2ZlL2Jhc2UvQnVpbGRpbmdCbG9ja0Jhc2VcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBkZWZpbmVVSTVDbGFzcywgdHlwZSBQcm9wZXJ0aWVzT2YsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBCdXR0b24kUHJlc3NFdmVudCB9IGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBCdXR0b24gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IExhYmVsIGZyb20gXCJzYXAvbS9MYWJlbFwiO1xuaW1wb3J0IHR5cGUgeyBMaW5rJFByZXNzRXZlbnQgfSBmcm9tIFwic2FwL20vTGlua1wiO1xuaW1wb3J0IExpbmsgZnJvbSBcInNhcC9tL0xpbmtcIjtcbmltcG9ydCB0eXBlIHsgUGxhY2VtZW50VHlwZSB9IGZyb20gXCJzYXAvbS9saWJyYXJ5XCI7XG5pbXBvcnQgeyBCdXR0b25UeXBlIH0gZnJvbSBcInNhcC9tL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIEV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgeyAkQ29udHJvbFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBMaWIgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IEFpTm90aWNlSGVscGVyIGZyb20gXCIuL0FpTm90aWNlSGVscGVyXCI7XG5cbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgdGhhdCBkaXNwbGF5cyBhIEFJIG5vdGljZS5cbiAqXG4gKiBJdCdzIHVzZWQgdG8gZGlzcGxheSBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIEFJIGZlYXR1cmVzLiBUaGlzIGluZm9ybWF0aW9uIGlzIHJlbmRlcmVkIGVpdGhlclxuICogYXMgYSBsaW5rIGlmIHRoZSBhZ2dyZWdhdGlvbiBwb3BvdmVyQ29udGVudCBpcyBkZWZpbmVkIG9yIGFzIGEgbGFiZWwgaWYgdGhlcmUgaXMgbm8gYWdncmVnYXRpb24gcG9wb3ZlckNvbnRlbnQuXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb250cm9scy5BSU5vdGljZVwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQUlOb3RpY2UgZXh0ZW5kcyBCdWlsZGluZ0Jsb2NrQmFzZTxDb250cm9sPiB7XG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc0JpbmRpbmdJbmZvOiB0cnVlLCBkZWZhdWx0VmFsdWU6IHRydWUgfSlcblx0dmlzaWJsZT86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIFRoZSB0eXBlIG9mIGNvbnRyb2wgdG8gZGlzcGxheVxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiwgZGVmYXVsdFZhbHVlOiBcIkxpbmtcIiB9KVxuXHR0eXBlPzogXCJMaW5rXCIgfCBcIkJ1dHRvblwiO1xuXG5cdC8qKlxuXHQgKiBUaGUgY29udGVudCB0byBkaXNwbGF5IGludG8gdGhlIHBvcG92ZXJcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAudWkuY29yZS5Db250cm9sXCIsIG11bHRpcGxlOiB0cnVlLCBpc0RlZmF1bHQ6IHRydWUgfSlcblx0cG9wb3ZlckNvbnRlbnQ/OiBDb250cm9sO1xuXG5cdC8qKlxuXHQgKiBUaGUgcGxhY2VtZW50IHR5cGUgb2YgdGhlIHBvcG92ZXJcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0cGxhY2VtZW50VHlwZT86IFBsYWNlbWVudFR5cGU7XG5cblx0cmVzb3VyY2VCdW5kbGUhOiBSZXNvdXJjZUJ1bmRsZTtcblxuXHRjb25zdHJ1Y3Rvcihwcm9wZXJ0aWVzOiBQcm9wZXJ0aWVzT2Y8QUlOb3RpY2U+LCBvdGhlcnM/OiAkQ29udHJvbFNldHRpbmdzKSB7XG5cdFx0c3VwZXIocHJvcGVydGllcywgb3RoZXJzKTtcblx0XHR0aGlzLnJlc291cmNlQnVuZGxlID0gTGliLmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLmNvbnRyb2xzXCIpIGFzIFJlc291cmNlQnVuZGxlO1xuXHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgdGhlIHByZXNzIGV2ZW50IG9uIHRoZSBjb250cm9sLlxuXHQgKiBAcGFyYW0gZXZlbnQgVGhlIHByZXNzIGV2ZW50XG5cdCAqL1xuXHRvblByZXNzKGV2ZW50OiBCdXR0b24kUHJlc3NFdmVudCB8IExpbmskUHJlc3NFdmVudCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLnBvcG92ZXJDb250ZW50KSB7XG5cdFx0XHRBaU5vdGljZUhlbHBlci5nZW5lcmF0ZVBvcG92ZXIoe1xuXHRcdFx0XHRjb250ZW50OiB0aGlzLnBvcG92ZXJDb250ZW50LFxuXHRcdFx0XHRwbGFjZW1lbnRUeXBlOiB0aGlzLnBsYWNlbWVudFR5cGUsXG5cdFx0XHRcdHBhcmVudDogKGV2ZW50IGFzIEV2ZW50PENvbnRyb2w+KS5nZXRTb3VyY2UoKSBhcyB1bmtub3duIGFzIENvbnRyb2xcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBsaW5rIG9yIHRleHQgZGVwZW5kaW5nIG9uIHRoZSBwb3BvdmVyQ29udGVudCBhZ2dyZWdhdGlvbi5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Y3JlYXRlTGlua09yTGFiZWwoKTogTGluayB8IExhYmVsIHtcblx0XHRjb25zdCBtYWluVGV4dCA9IHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fTk9USUNFX0FJX1RJVExFXCIpO1xuXHRcdHJldHVybiB0aGlzLmdldEFnZ3JlZ2F0aW9uKFwicG9wb3ZlckNvbnRlbnRcIikgPyAoXG5cdFx0XHQ8TGluayB2aXNpYmxlPXt0aGlzLnZpc2libGV9IHRleHQ9e21haW5UZXh0fSBwcmVzcz17KGU6IExpbmskUHJlc3NFdmVudCk6IHZvaWQgPT4gdGhpcy5vblByZXNzKGUpfSAvPlxuXHRcdCkgOiAoXG5cdFx0XHQ8TGFiZWwgdmlzaWJsZT17dGhpcy52aXNpYmxlfSB0ZXh0PXttYWluVGV4dH0gLz5cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGJ1dHRvbi5cblx0ICogQHJldHVybnMgVGhlIGJ1dHRvblxuXHQgKi9cblx0Y3JlYXRlQnV0dG9uKCk6IEJ1dHRvbiB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxCdXR0b25cblx0XHRcdFx0dmlzaWJsZT17dGhpcy52aXNpYmxlfVxuXHRcdFx0XHRpY29uPVwic2FwLWljb246Ly9haVwiXG5cdFx0XHRcdHR5cGU9e0J1dHRvblR5cGUuVHJhbnNwYXJlbnR9XG5cdFx0XHRcdHRleHQ9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fTk9USUNFX0FJX0ZJTFRFUlwiKX1cblx0XHRcdFx0cHJlc3M9eyhlOiBCdXR0b24kUHJlc3NFdmVudCk6IHZvaWQgPT4gdGhpcy5vblByZXNzKGUpfVxuXHRcdFx0Lz5cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGNvbnRlbnQgb2YgdGhpcyBidWlsZGluZyBibG9jay5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Y3JlYXRlQ29udGVudCgpOiBMaW5rIHwgQnV0dG9uIHwgTGFiZWwge1xuXHRcdHN3aXRjaCAodGhpcy50eXBlKSB7XG5cdFx0XHRjYXNlIFwiQnV0dG9uXCI6XG5cdFx0XHRcdHJldHVybiB0aGlzLmNyZWF0ZUJ1dHRvbigpO1xuXHRcdFx0Y2FzZSBcIkxpbmtcIjpcblx0XHRcdGRlZmF1bHQ6XG5cdFx0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
@@ -0,0 +1,111 @@
1
+ import type ResourceBundle from "sap/base/i18n/ResourceBundle";
2
+ import BuildingBlockBase from "sap/fe/base/BuildingBlockBase";
3
+ import { aggregation, defineUI5Class, type PropertiesOf, property } from "sap/fe/base/ClassSupport";
4
+ import type { Button$PressEvent } from "sap/m/Button";
5
+ import Button from "sap/m/Button";
6
+ import Label from "sap/m/Label";
7
+ import type { Link$PressEvent } from "sap/m/Link";
8
+ import Link from "sap/m/Link";
9
+ import type { PlacementType } from "sap/m/library";
10
+ import { ButtonType } from "sap/m/library";
11
+ import type Event from "sap/ui/base/Event";
12
+ import type Control from "sap/ui/core/Control";
13
+ import type { $ControlSettings } from "sap/ui/core/Control";
14
+ import Lib from "sap/ui/core/Lib";
15
+ import AiNoticeHelper from "./AiNoticeHelper";
16
+
17
+ /**
18
+ * Building block that displays a AI notice.
19
+ *
20
+ * It's used to display information related to AI features. This information is rendered either
21
+ * as a link if the aggregation popoverContent is defined or as a label if there is no aggregation popoverContent.
22
+ */
23
+ @defineUI5Class("sap.fe.controls.AINotice")
24
+ export default class AINotice extends BuildingBlockBase<Control> {
25
+ @property({ type: "boolean", isBindingInfo: true, defaultValue: true })
26
+ visible?: boolean;
27
+
28
+ /**
29
+ * The type of control to display
30
+ */
31
+ @property({ type: "string", defaultValue: "Link" })
32
+ type?: "Link" | "Button";
33
+
34
+ /**
35
+ * The content to display into the popover
36
+ * @public
37
+ */
38
+ @aggregation({ type: "sap.ui.core.Control", multiple: true, isDefault: true })
39
+ popoverContent?: Control;
40
+
41
+ /**
42
+ * The placement type of the popover
43
+ */
44
+ @property({ type: "string" })
45
+ placementType?: PlacementType;
46
+
47
+ resourceBundle!: ResourceBundle;
48
+
49
+ constructor(properties: PropertiesOf<AINotice>, others?: $ControlSettings) {
50
+ super(properties, others);
51
+ this.resourceBundle = Lib.getResourceBundleFor("sap.fe.controls") as ResourceBundle;
52
+ this.content = this.createContent();
53
+ }
54
+
55
+ /**
56
+ * Handles the press event on the control.
57
+ * @param event The press event
58
+ */
59
+ onPress(event: Button$PressEvent | Link$PressEvent): void {
60
+ if (this.popoverContent) {
61
+ AiNoticeHelper.generatePopover({
62
+ content: this.popoverContent,
63
+ placementType: this.placementType,
64
+ parent: (event as Event<Control>).getSource() as unknown as Control
65
+ });
66
+ }
67
+ }
68
+
69
+ /**
70
+ * Returns the link or text depending on the popoverContent aggregation.
71
+ * @returns The control tree
72
+ */
73
+ createLinkOrLabel(): Link | Label {
74
+ const mainText = this.resourceBundle.getText("M_NOTICE_AI_TITLE");
75
+ return this.getAggregation("popoverContent") ? (
76
+ <Link visible={this.visible} text={mainText} press={(e: Link$PressEvent): void => this.onPress(e)} />
77
+ ) : (
78
+ <Label visible={this.visible} text={mainText} />
79
+ );
80
+ }
81
+
82
+ /**
83
+ * Returns the button.
84
+ * @returns The button
85
+ */
86
+ createButton(): Button {
87
+ return (
88
+ <Button
89
+ visible={this.visible}
90
+ icon="sap-icon://ai"
91
+ type={ButtonType.Transparent}
92
+ text={this.resourceBundle.getText("M_NOTICE_AI_FILTER")}
93
+ press={(e: Button$PressEvent): void => this.onPress(e)}
94
+ />
95
+ );
96
+ }
97
+
98
+ /**
99
+ * Returns the content of this building block.
100
+ * @returns The control tree
101
+ */
102
+ createContent(): Link | Button | Label {
103
+ switch (this.type) {
104
+ case "Button":
105
+ return this.createButton();
106
+ case "Link":
107
+ default:
108
+ return this.createLinkOrLabel();
109
+ }
110
+ }
111
+ }
@@ -0,0 +1,55 @@
1
+ /*!
2
+ * SAP UI development toolkit for HTML5 (SAPUI5)
3
+ * (c) Copyright 2009-2026 SAP SE. All rights reserved
4
+ */
5
+ sap.ui.define(["sap/m/Button", "sap/m/OverflowToolbar", "sap/m/Popover", "sap/m/ToolbarSpacer", "sap/ui/core/Lib", "sap/fe/base/jsx-runtime/jsx", "sap/fe/base/jsx-runtime/Fragment", "sap/fe/base/jsx-runtime/jsxs"], function (Button, OverflowToolbar, Popover, ToolbarSpacer, Lib, _jsx, _Fragment, _jsxs) {
6
+ "use strict";
7
+
8
+ return {
9
+ /**
10
+ * Generates a popover with AI notice content. The popover is opened by the provided parent control.
11
+ * @param params An object containing parameters for generating the popover
12
+ * @param params.parent The control that opens the popover
13
+ * @param params.placementType Optional placement type for the popover
14
+ * @param params.content Optional content for the popover. If not provided, default content is used.
15
+ * @returns The generated Popover instance
16
+ */
17
+ generatePopover(params) {
18
+ const {
19
+ parent,
20
+ placementType,
21
+ content
22
+ } = params;
23
+ const resourceBundle = Lib.getResourceBundleFor("sap.fe.controls");
24
+ const myPopover = _jsx(Popover, {
25
+ class: "sapUiContentPadding",
26
+ contentMinWidth: "22.8125rem",
27
+ showArrow: true,
28
+ showHeader: true,
29
+ placement: placementType,
30
+ title: resourceBundle.getText("M_POPOVER_AI_TITLE"),
31
+ afterClose: () => {
32
+ myPopover?.destroy();
33
+ },
34
+ children: {
35
+ content: Array.isArray(content) ? content.map(item => item.clone()) : content?.clone(),
36
+ footer: _jsx(OverflowToolbar, {
37
+ children: {
38
+ content: _jsxs(_Fragment, {
39
+ children: [_jsx(ToolbarSpacer, {}), _jsx(Button, {
40
+ text: resourceBundle.getText("M_NOTICE_AI_CLOSE"),
41
+ press: () => {
42
+ myPopover.close();
43
+ }
44
+ })]
45
+ })
46
+ }
47
+ })
48
+ }
49
+ });
50
+ myPopover.openBy(parent);
51
+ return myPopover;
52
+ }
53
+ };
54
+ }, false);
55
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZW5lcmF0ZVBvcG92ZXIiLCJwYXJhbXMiLCJwYXJlbnQiLCJwbGFjZW1lbnRUeXBlIiwiY29udGVudCIsInJlc291cmNlQnVuZGxlIiwiTGliIiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJteVBvcG92ZXIiLCJfanN4IiwiUG9wb3ZlciIsImNsYXNzIiwiY29udGVudE1pbldpZHRoIiwic2hvd0Fycm93Iiwic2hvd0hlYWRlciIsInBsYWNlbWVudCIsInRpdGxlIiwiZ2V0VGV4dCIsImFmdGVyQ2xvc2UiLCJkZXN0cm95IiwiY2hpbGRyZW4iLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJpdGVtIiwiY2xvbmUiLCJmb290ZXIiLCJPdmVyZmxvd1Rvb2xiYXIiLCJfanN4cyIsIl9GcmFnbWVudCIsIlRvb2xiYXJTcGFjZXIiLCJCdXR0b24iLCJ0ZXh0IiwicHJlc3MiLCJjbG9zZSIsIm9wZW5CeSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQWlOb3RpY2VIZWxwZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIFJlc291cmNlQnVuZGxlIGZyb20gXCJzYXAvYmFzZS9pMThuL1Jlc291cmNlQnVuZGxlXCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCB0eXBlIHsgUGxhY2VtZW50VHlwZSB9IGZyb20gXCJzYXAvbS9saWJyYXJ5XCI7XG5pbXBvcnQgT3ZlcmZsb3dUb29sYmFyIGZyb20gXCJzYXAvbS9PdmVyZmxvd1Rvb2xiYXJcIjtcbmltcG9ydCBQb3BvdmVyIGZyb20gXCJzYXAvbS9Qb3BvdmVyXCI7XG5pbXBvcnQgVG9vbGJhclNwYWNlciBmcm9tIFwic2FwL20vVG9vbGJhclNwYWNlclwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IExpYiBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIHBvcG92ZXIgd2l0aCBBSSBub3RpY2UgY29udGVudC4gVGhlIHBvcG92ZXIgaXMgb3BlbmVkIGJ5IHRoZSBwcm92aWRlZCBwYXJlbnQgY29udHJvbC5cblx0ICogQHBhcmFtIHBhcmFtcyBBbiBvYmplY3QgY29udGFpbmluZyBwYXJhbWV0ZXJzIGZvciBnZW5lcmF0aW5nIHRoZSBwb3BvdmVyXG5cdCAqIEBwYXJhbSBwYXJhbXMucGFyZW50IFRoZSBjb250cm9sIHRoYXQgb3BlbnMgdGhlIHBvcG92ZXJcblx0ICogQHBhcmFtIHBhcmFtcy5wbGFjZW1lbnRUeXBlIE9wdGlvbmFsIHBsYWNlbWVudCB0eXBlIGZvciB0aGUgcG9wb3ZlclxuXHQgKiBAcGFyYW0gcGFyYW1zLmNvbnRlbnQgT3B0aW9uYWwgY29udGVudCBmb3IgdGhlIHBvcG92ZXIuIElmIG5vdCBwcm92aWRlZCwgZGVmYXVsdCBjb250ZW50IGlzIHVzZWQuXG5cdCAqIEByZXR1cm5zIFRoZSBnZW5lcmF0ZWQgUG9wb3ZlciBpbnN0YW5jZVxuXHQgKi9cblx0Z2VuZXJhdGVQb3BvdmVyKHBhcmFtczogeyBwYXJlbnQ6IENvbnRyb2w7IHBsYWNlbWVudFR5cGU/OiBQbGFjZW1lbnRUeXBlOyBjb250ZW50OiBDb250cm9sIHwgQ29udHJvbFtdIH0pOiBQb3BvdmVyIHtcblx0XHRjb25zdCB7IHBhcmVudCwgcGxhY2VtZW50VHlwZSwgY29udGVudCB9ID0gcGFyYW1zO1xuXHRcdGNvbnN0IHJlc291cmNlQnVuZGxlID0gTGliLmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLmNvbnRyb2xzXCIpIGFzIFJlc291cmNlQnVuZGxlO1xuXG5cdFx0Y29uc3QgbXlQb3BvdmVyID0gKFxuXHRcdFx0PFBvcG92ZXJcblx0XHRcdFx0Y2xhc3M9XCJzYXBVaUNvbnRlbnRQYWRkaW5nXCJcblx0XHRcdFx0Y29udGVudE1pbldpZHRoPXtcIjIyLjgxMjVyZW1cIn1cblx0XHRcdFx0c2hvd0Fycm93PXt0cnVlfVxuXHRcdFx0XHRzaG93SGVhZGVyPXt0cnVlfVxuXHRcdFx0XHRwbGFjZW1lbnQ9e3BsYWNlbWVudFR5cGV9XG5cdFx0XHRcdHRpdGxlPXtyZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9QT1BPVkVSX0FJX1RJVExFXCIpfVxuXHRcdFx0XHRhZnRlckNsb3NlPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0bXlQb3BvdmVyPy5kZXN0cm95KCk7XG5cdFx0XHRcdH19XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0Y29udGVudDogQXJyYXkuaXNBcnJheShjb250ZW50KSA/IGNvbnRlbnQubWFwKChpdGVtOiBDb250cm9sKSA9PiBpdGVtLmNsb25lKCkpIDogY29udGVudD8uY2xvbmUoKSxcblx0XHRcdFx0XHRmb290ZXI6IChcblx0XHRcdFx0XHRcdDxPdmVyZmxvd1Rvb2xiYXI+XG5cdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0Y29udGVudDogKFxuXHRcdFx0XHRcdFx0XHRcdFx0PD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PFRvb2xiYXJTcGFjZXIgLz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e3Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX05PVElDRV9BSV9DTE9TRVwiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bXlQb3BvdmVyLmNsb3NlKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdDwvPlxuXHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdDwvT3ZlcmZsb3dUb29sYmFyPlxuXHRcdFx0XHRcdClcblx0XHRcdFx0fX1cblx0XHRcdDwvUG9wb3Zlcj5cblx0XHQpO1xuXHRcdG15UG9wb3Zlci5vcGVuQnkocGFyZW50KTtcblx0XHRyZXR1cm4gbXlQb3BvdmVyO1xuXHR9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O1NBU2U7SUFDZDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0NBLGVBQWVBLENBQUNDLE1BQXdGLEVBQVc7TUFDbEgsTUFBTTtRQUFFQyxNQUFNO1FBQUVDLGFBQWE7UUFBRUM7TUFBUSxDQUFDLEdBQUdILE1BQU07TUFDakQsTUFBTUksY0FBYyxHQUFHQyxHQUFHLENBQUNDLG9CQUFvQixDQUFDLGlCQUFpQixDQUFtQjtNQUVwRixNQUFNQyxTQUFTLEdBQ2RDLElBQUEsQ0FBQ0MsT0FBTztRQUNQQyxLQUFLLEVBQUMscUJBQXFCO1FBQzNCQyxlQUFlLEVBQUUsWUFBYTtRQUM5QkMsU0FBUyxFQUFFLElBQUs7UUFDaEJDLFVBQVUsRUFBRSxJQUFLO1FBQ2pCQyxTQUFTLEVBQUVaLGFBQWM7UUFDekJhLEtBQUssRUFBRVgsY0FBYyxDQUFDWSxPQUFPLENBQUMsb0JBQW9CLENBQUU7UUFDcERDLFVBQVUsRUFBRUEsQ0FBQSxLQUFZO1VBQ3ZCVixTQUFTLEVBQUVXLE9BQU8sQ0FBQyxDQUFDO1FBQ3JCLENBQUU7UUFBQUMsUUFBQSxFQUVEO1VBQ0FoQixPQUFPLEVBQUVpQixLQUFLLENBQUNDLE9BQU8sQ0FBQ2xCLE9BQU8sQ0FBQyxHQUFHQSxPQUFPLENBQUNtQixHQUFHLENBQUVDLElBQWEsSUFBS0EsSUFBSSxDQUFDQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUdyQixPQUFPLEVBQUVxQixLQUFLLENBQUMsQ0FBQztVQUNqR0MsTUFBTSxFQUNMakIsSUFBQSxDQUFDa0IsZUFBZTtZQUFBUCxRQUFBLEVBQ2Q7Y0FDQWhCLE9BQU8sRUFDTndCLEtBQUEsQ0FBQUMsU0FBQTtnQkFBQVQsUUFBQSxHQUNDWCxJQUFBLENBQUNxQixhQUFhLElBQUUsQ0FBQyxFQUNqQnJCLElBQUEsQ0FBQ3NCLE1BQU07a0JBQ05DLElBQUksRUFBRTNCLGNBQWMsQ0FBQ1ksT0FBTyxDQUFDLG1CQUFtQixDQUFFO2tCQUNsRGdCLEtBQUssRUFBRUEsQ0FBQSxLQUFZO29CQUNsQnpCLFNBQVMsQ0FBQzBCLEtBQUssQ0FBQyxDQUFDO2tCQUNsQjtnQkFBRSxDQUNGLENBQUM7Y0FBQSxDQUNEO1lBRUo7VUFBQyxDQUNlO1FBRW5CO01BQUMsQ0FDTyxDQUNUO01BQ0QxQixTQUFTLENBQUMyQixNQUFNLENBQUNqQyxNQUFNLENBQUM7TUFDeEIsT0FBT00sU0FBUztJQUNqQjtFQUNELENBQUM7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1,60 @@
1
+ import type ResourceBundle from "sap/base/i18n/ResourceBundle";
2
+ import Button from "sap/m/Button";
3
+ import type { PlacementType } from "sap/m/library";
4
+ import OverflowToolbar from "sap/m/OverflowToolbar";
5
+ import Popover from "sap/m/Popover";
6
+ import ToolbarSpacer from "sap/m/ToolbarSpacer";
7
+ import type Control from "sap/ui/core/Control";
8
+ import Lib from "sap/ui/core/Lib";
9
+
10
+ export default {
11
+ /**
12
+ * Generates a popover with AI notice content. The popover is opened by the provided parent control.
13
+ * @param params An object containing parameters for generating the popover
14
+ * @param params.parent The control that opens the popover
15
+ * @param params.placementType Optional placement type for the popover
16
+ * @param params.content Optional content for the popover. If not provided, default content is used.
17
+ * @returns The generated Popover instance
18
+ */
19
+ generatePopover(params: { parent: Control; placementType?: PlacementType; content: Control | Control[] }): Popover {
20
+ const { parent, placementType, content } = params;
21
+ const resourceBundle = Lib.getResourceBundleFor("sap.fe.controls") as ResourceBundle;
22
+
23
+ const myPopover = (
24
+ <Popover
25
+ class="sapUiContentPadding"
26
+ contentMinWidth={"22.8125rem"}
27
+ showArrow={true}
28
+ showHeader={true}
29
+ placement={placementType}
30
+ title={resourceBundle.getText("M_POPOVER_AI_TITLE")}
31
+ afterClose={(): void => {
32
+ myPopover?.destroy();
33
+ }}
34
+ >
35
+ {{
36
+ content: Array.isArray(content) ? content.map((item: Control) => item.clone()) : content?.clone(),
37
+ footer: (
38
+ <OverflowToolbar>
39
+ {{
40
+ content: (
41
+ <>
42
+ <ToolbarSpacer />
43
+ <Button
44
+ text={resourceBundle.getText("M_NOTICE_AI_CLOSE")}
45
+ press={(): void => {
46
+ myPopover.close();
47
+ }}
48
+ />
49
+ </>
50
+ )
51
+ }}
52
+ </OverflowToolbar>
53
+ )
54
+ }}
55
+ </Popover>
56
+ );
57
+ myPopover.openBy(parent);
58
+ return myPopover;
59
+ }
60
+ };
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
- * (c) Copyright 2009-2025 SAP SE. All rights reserved
3
+ * (c) Copyright 2009-2026 SAP SE. All rights reserved
4
4
  */
5
5
  sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/base/jsx-runtime/jsx", "sap/ui/core/Control", "sap/fe/base/jsx-runtime/jsx"], function (ClassSupport, jsx, Control, _jsx) {
6
6
  "use strict";