@sapui5/sap.fe.controls 1.148.0 → 1.148.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.fe.controls",
3
- "version": "1.148.0",
3
+ "version": "1.148.1",
4
4
  "description": "SAPUI5 Library sap.fe.controls",
5
5
  "keywords": [
6
6
  "sapui5",
@@ -6,7 +6,7 @@
6
6
  SAP UI development toolkit for HTML5 (SAPUI5)
7
7
  (c) Copyright 2009-2026 SAP SE. All rights reserved
8
8
  </copyright>
9
- <version>1.148.0</version>
9
+ <version>1.148.1</version>
10
10
 
11
11
  <documentation>UI5 library: sap.fe.controls</documentation>
12
12
 
@@ -2,9 +2,16 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2026 SAP SE. All rights reserved
4
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) {
5
+ sap.ui.define(["sap/m/Button", "sap/m/OverflowToolbar", "sap/m/Popover", "sap/m/Text", "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, Text, ToolbarSpacer, Lib, _jsx, _Fragment, _jsxs) {
6
6
  "use strict";
7
7
 
8
+ function getParentView(control) {
9
+ let current = control;
10
+ while (current && !current.isA("sap.ui.core.mvc.View")) {
11
+ current = current.getParent();
12
+ }
13
+ return current ?? undefined;
14
+ }
8
15
  return {
9
16
  /**
10
17
  * Generates a popover with AI notice content. The popover is opened by the provided parent control.
@@ -12,15 +19,27 @@ sap.ui.define(["sap/m/Button", "sap/m/OverflowToolbar", "sap/m/Popover", "sap/m/
12
19
  * @param params.parent The control that opens the popover
13
20
  * @param params.placementType Optional placement type for the popover
14
21
  * @param params.content Optional content for the popover. If not provided, default content is used.
22
+ * @param params.contentText Optional text content for the popover. Use this instead of content to support i18n binding strings.
15
23
  * @returns The generated Popover instance
16
24
  */
17
25
  generatePopover(params) {
18
26
  const {
19
27
  parent,
20
- placementType,
21
- content
28
+ placementType
22
29
  } = params;
23
30
  const resourceBundle = Lib.getResourceBundleFor("sap.fe.controls");
31
+ const resolveContent = () => {
32
+ if (params.contentText !== undefined) {
33
+ return new Text({
34
+ text: params.contentText
35
+ });
36
+ }
37
+ const {
38
+ content
39
+ } = params;
40
+ return Array.isArray(content) ? content.map(item => item.clone()) : content?.clone();
41
+ };
42
+ const view = getParentView(params.parent);
24
43
  const myPopover = _jsx(Popover, {
25
44
  class: "sapUiContentPadding",
26
45
  contentMinWidth: "22.8125rem",
@@ -29,10 +48,11 @@ sap.ui.define(["sap/m/Button", "sap/m/OverflowToolbar", "sap/m/Popover", "sap/m/
29
48
  placement: placementType,
30
49
  title: resourceBundle.getText("M_POPOVER_AI_TITLE"),
31
50
  afterClose: () => {
51
+ view?.removeDependent(myPopover);
32
52
  myPopover?.destroy();
33
53
  },
34
54
  children: {
35
- content: Array.isArray(content) ? content.map(item => item.clone()) : content?.clone(),
55
+ content: resolveContent(),
36
56
  footer: _jsx(OverflowToolbar, {
37
57
  children: {
38
58
  content: _jsxs(_Fragment, {
@@ -47,9 +67,10 @@ sap.ui.define(["sap/m/Button", "sap/m/OverflowToolbar", "sap/m/Popover", "sap/m/
47
67
  })
48
68
  }
49
69
  });
70
+ view?.addDependent(myPopover);
50
71
  myPopover.openBy(parent);
51
72
  return myPopover;
52
73
  }
53
74
  };
54
75
  }, false);
55
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZW5lcmF0ZVBvcG92ZXIiLCJwYXJhbXMiLCJwYXJlbnQiLCJwbGFjZW1lbnRUeXBlIiwiY29udGVudCIsInJlc291cmNlQnVuZGxlIiwiTGliIiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJteVBvcG92ZXIiLCJfanN4IiwiUG9wb3ZlciIsImNsYXNzIiwiY29udGVudE1pbldpZHRoIiwic2hvd0Fycm93Iiwic2hvd0hlYWRlciIsInBsYWNlbWVudCIsInRpdGxlIiwiZ2V0VGV4dCIsImFmdGVyQ2xvc2UiLCJkZXN0cm95IiwiY2hpbGRyZW4iLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJpdGVtIiwiY2xvbmUiLCJmb290ZXIiLCJPdmVyZmxvd1Rvb2xiYXIiLCJfanN4cyIsIl9GcmFnbWVudCIsIlRvb2xiYXJTcGFjZXIiLCJCdXR0b24iLCJ0ZXh0IiwicHJlc3MiLCJjbG9zZSIsIm9wZW5CeSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQWlOb3RpY2VIZWxwZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIFJlc291cmNlQnVuZGxlIGZyb20gXCJzYXAvYmFzZS9pMThuL1Jlc291cmNlQnVuZGxlXCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCB0eXBlIHsgUGxhY2VtZW50VHlwZSB9IGZyb20gXCJzYXAvbS9saWJyYXJ5XCI7XG5pbXBvcnQgT3ZlcmZsb3dUb29sYmFyIGZyb20gXCJzYXAvbS9PdmVyZmxvd1Rvb2xiYXJcIjtcbmltcG9ydCBQb3BvdmVyIGZyb20gXCJzYXAvbS9Qb3BvdmVyXCI7XG5pbXBvcnQgVG9vbGJhclNwYWNlciBmcm9tIFwic2FwL20vVG9vbGJhclNwYWNlclwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IExpYiBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIHBvcG92ZXIgd2l0aCBBSSBub3RpY2UgY29udGVudC4gVGhlIHBvcG92ZXIgaXMgb3BlbmVkIGJ5IHRoZSBwcm92aWRlZCBwYXJlbnQgY29udHJvbC5cblx0ICogQHBhcmFtIHBhcmFtcyBBbiBvYmplY3QgY29udGFpbmluZyBwYXJhbWV0ZXJzIGZvciBnZW5lcmF0aW5nIHRoZSBwb3BvdmVyXG5cdCAqIEBwYXJhbSBwYXJhbXMucGFyZW50IFRoZSBjb250cm9sIHRoYXQgb3BlbnMgdGhlIHBvcG92ZXJcblx0ICogQHBhcmFtIHBhcmFtcy5wbGFjZW1lbnRUeXBlIE9wdGlvbmFsIHBsYWNlbWVudCB0eXBlIGZvciB0aGUgcG9wb3ZlclxuXHQgKiBAcGFyYW0gcGFyYW1zLmNvbnRlbnQgT3B0aW9uYWwgY29udGVudCBmb3IgdGhlIHBvcG92ZXIuIElmIG5vdCBwcm92aWRlZCwgZGVmYXVsdCBjb250ZW50IGlzIHVzZWQuXG5cdCAqIEByZXR1cm5zIFRoZSBnZW5lcmF0ZWQgUG9wb3ZlciBpbnN0YW5jZVxuXHQgKi9cblx0Z2VuZXJhdGVQb3BvdmVyKHBhcmFtczogeyBwYXJlbnQ6IENvbnRyb2w7IHBsYWNlbWVudFR5cGU/OiBQbGFjZW1lbnRUeXBlOyBjb250ZW50OiBDb250cm9sIHwgQ29udHJvbFtdIH0pOiBQb3BvdmVyIHtcblx0XHRjb25zdCB7IHBhcmVudCwgcGxhY2VtZW50VHlwZSwgY29udGVudCB9ID0gcGFyYW1zO1xuXHRcdGNvbnN0IHJlc291cmNlQnVuZGxlID0gTGliLmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLmNvbnRyb2xzXCIpIGFzIFJlc291cmNlQnVuZGxlO1xuXG5cdFx0Y29uc3QgbXlQb3BvdmVyID0gKFxuXHRcdFx0PFBvcG92ZXJcblx0XHRcdFx0Y2xhc3M9XCJzYXBVaUNvbnRlbnRQYWRkaW5nXCJcblx0XHRcdFx0Y29udGVudE1pbldpZHRoPXtcIjIyLjgxMjVyZW1cIn1cblx0XHRcdFx0c2hvd0Fycm93PXt0cnVlfVxuXHRcdFx0XHRzaG93SGVhZGVyPXt0cnVlfVxuXHRcdFx0XHRwbGFjZW1lbnQ9e3BsYWNlbWVudFR5cGV9XG5cdFx0XHRcdHRpdGxlPXtyZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9QT1BPVkVSX0FJX1RJVExFXCIpfVxuXHRcdFx0XHRhZnRlckNsb3NlPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0bXlQb3BvdmVyPy5kZXN0cm95KCk7XG5cdFx0XHRcdH19XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0Y29udGVudDogQXJyYXkuaXNBcnJheShjb250ZW50KSA/IGNvbnRlbnQubWFwKChpdGVtOiBDb250cm9sKSA9PiBpdGVtLmNsb25lKCkpIDogY29udGVudD8uY2xvbmUoKSxcblx0XHRcdFx0XHRmb290ZXI6IChcblx0XHRcdFx0XHRcdDxPdmVyZmxvd1Rvb2xiYXI+XG5cdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0Y29udGVudDogKFxuXHRcdFx0XHRcdFx0XHRcdFx0PD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PFRvb2xiYXJTcGFjZXIgLz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e3Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX05PVElDRV9BSV9DTE9TRVwiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bXlQb3BvdmVyLmNsb3NlKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdDwvPlxuXHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdDwvT3ZlcmZsb3dUb29sYmFyPlxuXHRcdFx0XHRcdClcblx0XHRcdFx0fX1cblx0XHRcdDwvUG9wb3Zlcj5cblx0XHQpO1xuXHRcdG15UG9wb3Zlci5vcGVuQnkocGFyZW50KTtcblx0XHRyZXR1cm4gbXlQb3BvdmVyO1xuXHR9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O1NBU2U7SUFDZDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0NBLGVBQWVBLENBQUNDLE1BQXdGLEVBQVc7TUFDbEgsTUFBTTtRQUFFQyxNQUFNO1FBQUVDLGFBQWE7UUFBRUM7TUFBUSxDQUFDLEdBQUdILE1BQU07TUFDakQsTUFBTUksY0FBYyxHQUFHQyxHQUFHLENBQUNDLG9CQUFvQixDQUFDLGlCQUFpQixDQUFtQjtNQUVwRixNQUFNQyxTQUFTLEdBQ2RDLElBQUEsQ0FBQ0MsT0FBTztRQUNQQyxLQUFLLEVBQUMscUJBQXFCO1FBQzNCQyxlQUFlLEVBQUUsWUFBYTtRQUM5QkMsU0FBUyxFQUFFLElBQUs7UUFDaEJDLFVBQVUsRUFBRSxJQUFLO1FBQ2pCQyxTQUFTLEVBQUVaLGFBQWM7UUFDekJhLEtBQUssRUFBRVgsY0FBYyxDQUFDWSxPQUFPLENBQUMsb0JBQW9CLENBQUU7UUFDcERDLFVBQVUsRUFBRUEsQ0FBQSxLQUFZO1VBQ3ZCVixTQUFTLEVBQUVXLE9BQU8sQ0FBQyxDQUFDO1FBQ3JCLENBQUU7UUFBQUMsUUFBQSxFQUVEO1VBQ0FoQixPQUFPLEVBQUVpQixLQUFLLENBQUNDLE9BQU8sQ0FBQ2xCLE9BQU8sQ0FBQyxHQUFHQSxPQUFPLENBQUNtQixHQUFHLENBQUVDLElBQWEsSUFBS0EsSUFBSSxDQUFDQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUdyQixPQUFPLEVBQUVxQixLQUFLLENBQUMsQ0FBQztVQUNqR0MsTUFBTSxFQUNMakIsSUFBQSxDQUFDa0IsZUFBZTtZQUFBUCxRQUFBLEVBQ2Q7Y0FDQWhCLE9BQU8sRUFDTndCLEtBQUEsQ0FBQUMsU0FBQTtnQkFBQVQsUUFBQSxHQUNDWCxJQUFBLENBQUNxQixhQUFhLElBQUUsQ0FBQyxFQUNqQnJCLElBQUEsQ0FBQ3NCLE1BQU07a0JBQ05DLElBQUksRUFBRTNCLGNBQWMsQ0FBQ1ksT0FBTyxDQUFDLG1CQUFtQixDQUFFO2tCQUNsRGdCLEtBQUssRUFBRUEsQ0FBQSxLQUFZO29CQUNsQnpCLFNBQVMsQ0FBQzBCLEtBQUssQ0FBQyxDQUFDO2tCQUNsQjtnQkFBRSxDQUNGLENBQUM7Y0FBQSxDQUNEO1lBRUo7VUFBQyxDQUNlO1FBRW5CO01BQUMsQ0FDTyxDQUNUO01BQ0QxQixTQUFTLENBQUMyQixNQUFNLENBQUNqQyxNQUFNLENBQUM7TUFDeEIsT0FBT00sU0FBUztJQUNqQjtFQUNELENBQUM7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
76
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRQYXJlbnRWaWV3IiwiY29udHJvbCIsImN1cnJlbnQiLCJpc0EiLCJnZXRQYXJlbnQiLCJ1bmRlZmluZWQiLCJnZW5lcmF0ZVBvcG92ZXIiLCJwYXJhbXMiLCJwYXJlbnQiLCJwbGFjZW1lbnRUeXBlIiwicmVzb3VyY2VCdW5kbGUiLCJMaWIiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsInJlc29sdmVDb250ZW50IiwiY29udGVudFRleHQiLCJUZXh0IiwidGV4dCIsImNvbnRlbnQiLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJpdGVtIiwiY2xvbmUiLCJ2aWV3IiwibXlQb3BvdmVyIiwiX2pzeCIsIlBvcG92ZXIiLCJjbGFzcyIsImNvbnRlbnRNaW5XaWR0aCIsInNob3dBcnJvdyIsInNob3dIZWFkZXIiLCJwbGFjZW1lbnQiLCJ0aXRsZSIsImdldFRleHQiLCJhZnRlckNsb3NlIiwicmVtb3ZlRGVwZW5kZW50IiwiZGVzdHJveSIsImNoaWxkcmVuIiwiZm9vdGVyIiwiT3ZlcmZsb3dUb29sYmFyIiwiX2pzeHMiLCJfRnJhZ21lbnQiLCJUb29sYmFyU3BhY2VyIiwiQnV0dG9uIiwicHJlc3MiLCJjbG9zZSIsImFkZERlcGVuZGVudCIsIm9wZW5CeSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQWlOb3RpY2VIZWxwZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIFJlc291cmNlQnVuZGxlIGZyb20gXCJzYXAvYmFzZS9pMThuL1Jlc291cmNlQnVuZGxlXCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCB0eXBlIHsgUGxhY2VtZW50VHlwZSB9IGZyb20gXCJzYXAvbS9saWJyYXJ5XCI7XG5pbXBvcnQgT3ZlcmZsb3dUb29sYmFyIGZyb20gXCJzYXAvbS9PdmVyZmxvd1Rvb2xiYXJcIjtcbmltcG9ydCBQb3BvdmVyIGZyb20gXCJzYXAvbS9Qb3BvdmVyXCI7XG5pbXBvcnQgVGV4dCBmcm9tIFwic2FwL20vVGV4dFwiO1xuaW1wb3J0IFRvb2xiYXJTcGFjZXIgZnJvbSBcInNhcC9tL1Rvb2xiYXJTcGFjZXJcIjtcbmltcG9ydCB0eXBlIE1hbmFnZWRPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBMaWIgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcblxuZnVuY3Rpb24gZ2V0UGFyZW50Vmlldyhjb250cm9sOiBDb250cm9sKTogVmlldyB8IHVuZGVmaW5lZCB7XG5cdGxldCBjdXJyZW50OiBNYW5hZ2VkT2JqZWN0IHwgbnVsbCA9IGNvbnRyb2w7XG5cdHdoaWxlIChjdXJyZW50ICYmICFjdXJyZW50LmlzQTxWaWV3PihcInNhcC51aS5jb3JlLm12Yy5WaWV3XCIpKSB7XG5cdFx0Y3VycmVudCA9IGN1cnJlbnQuZ2V0UGFyZW50KCk7XG5cdH1cblx0cmV0dXJuIGN1cnJlbnQgPz8gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBwb3BvdmVyIHdpdGggQUkgbm90aWNlIGNvbnRlbnQuIFRoZSBwb3BvdmVyIGlzIG9wZW5lZCBieSB0aGUgcHJvdmlkZWQgcGFyZW50IGNvbnRyb2wuXG5cdCAqIEBwYXJhbSBwYXJhbXMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgcGFyYW1ldGVycyBmb3IgZ2VuZXJhdGluZyB0aGUgcG9wb3ZlclxuXHQgKiBAcGFyYW0gcGFyYW1zLnBhcmVudCBUaGUgY29udHJvbCB0aGF0IG9wZW5zIHRoZSBwb3BvdmVyXG5cdCAqIEBwYXJhbSBwYXJhbXMucGxhY2VtZW50VHlwZSBPcHRpb25hbCBwbGFjZW1lbnQgdHlwZSBmb3IgdGhlIHBvcG92ZXJcblx0ICogQHBhcmFtIHBhcmFtcy5jb250ZW50IE9wdGlvbmFsIGNvbnRlbnQgZm9yIHRoZSBwb3BvdmVyLiBJZiBub3QgcHJvdmlkZWQsIGRlZmF1bHQgY29udGVudCBpcyB1c2VkLlxuXHQgKiBAcGFyYW0gcGFyYW1zLmNvbnRlbnRUZXh0IE9wdGlvbmFsIHRleHQgY29udGVudCBmb3IgdGhlIHBvcG92ZXIuIFVzZSB0aGlzIGluc3RlYWQgb2YgY29udGVudCB0byBzdXBwb3J0IGkxOG4gYmluZGluZyBzdHJpbmdzLlxuXHQgKiBAcmV0dXJucyBUaGUgZ2VuZXJhdGVkIFBvcG92ZXIgaW5zdGFuY2Vcblx0ICovXG5cdGdlbmVyYXRlUG9wb3ZlcihwYXJhbXM6IHtcblx0XHRwYXJlbnQ6IENvbnRyb2w7XG5cdFx0cGxhY2VtZW50VHlwZT86IFBsYWNlbWVudFR5cGU7XG5cdFx0Y29udGVudD86IENvbnRyb2wgfCBDb250cm9sW107XG5cdFx0Y29udGVudFRleHQ/OiBzdHJpbmc7XG5cdH0pOiBQb3BvdmVyIHtcblx0XHRjb25zdCB7IHBhcmVudCwgcGxhY2VtZW50VHlwZSB9ID0gcGFyYW1zO1xuXHRcdGNvbnN0IHJlc291cmNlQnVuZGxlID0gTGliLmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLmNvbnRyb2xzXCIpIGFzIFJlc291cmNlQnVuZGxlO1xuXG5cdFx0Y29uc3QgcmVzb2x2ZUNvbnRlbnQgPSAoKTogQ29udHJvbCB8IENvbnRyb2xbXSB8IHVuZGVmaW5lZCA9PiB7XG5cdFx0XHRpZiAocGFyYW1zLmNvbnRlbnRUZXh0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0cmV0dXJuIG5ldyBUZXh0KHsgdGV4dDogcGFyYW1zLmNvbnRlbnRUZXh0IH0pO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgeyBjb250ZW50IH0gPSBwYXJhbXM7XG5cdFx0XHRyZXR1cm4gQXJyYXkuaXNBcnJheShjb250ZW50KSA/IGNvbnRlbnQubWFwKChpdGVtOiBDb250cm9sKSA9PiBpdGVtLmNsb25lKCkpIDogY29udGVudD8uY2xvbmUoKTtcblx0XHR9O1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdmlldyA9IGdldFBhcmVudFZpZXcocGFyYW1zLnBhcmVudCk7XG5cdFx0Y29uc3QgbXlQb3BvdmVyID0gKFxuXHRcdFx0PFBvcG92ZXJcblx0XHRcdFx0Y2xhc3M9XCJzYXBVaUNvbnRlbnRQYWRkaW5nXCJcblx0XHRcdFx0Y29udGVudE1pbldpZHRoPXtcIjIyLjgxMjVyZW1cIn1cblx0XHRcdFx0c2hvd0Fycm93PXt0cnVlfVxuXHRcdFx0XHRzaG93SGVhZGVyPXt0cnVlfVxuXHRcdFx0XHRwbGFjZW1lbnQ9e3BsYWNlbWVudFR5cGV9XG5cdFx0XHRcdHRpdGxlPXtyZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9QT1BPVkVSX0FJX1RJVExFXCIpfVxuXHRcdFx0XHRhZnRlckNsb3NlPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0dmlldz8ucmVtb3ZlRGVwZW5kZW50KG15UG9wb3Zlcik7XG5cdFx0XHRcdFx0bXlQb3BvdmVyPy5kZXN0cm95KCk7XG5cdFx0XHRcdH19XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0Y29udGVudDogcmVzb2x2ZUNvbnRlbnQoKSxcblx0XHRcdFx0XHRmb290ZXI6IChcblx0XHRcdFx0XHRcdDxPdmVyZmxvd1Rvb2xiYXI+XG5cdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0Y29udGVudDogKFxuXHRcdFx0XHRcdFx0XHRcdFx0PD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PFRvb2xiYXJTcGFjZXIgLz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e3Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX05PVElDRV9BSV9DTE9TRVwiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bXlQb3BvdmVyLmNsb3NlKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdDwvPlxuXHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdDwvT3ZlcmZsb3dUb29sYmFyPlxuXHRcdFx0XHRcdClcblx0XHRcdFx0fX1cblx0XHRcdDwvUG9wb3Zlcj5cblx0XHQpO1xuXHRcdHZpZXc/LmFkZERlcGVuZGVudChteVBvcG92ZXIpO1xuXHRcdG15UG9wb3Zlci5vcGVuQnkocGFyZW50KTtcblx0XHRyZXR1cm4gbXlQb3BvdmVyO1xuXHR9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0VBWUEsU0FBU0EsYUFBYUEsQ0FBQ0MsT0FBZ0IsRUFBb0I7SUFDMUQsSUFBSUMsT0FBNkIsR0FBR0QsT0FBTztJQUMzQyxPQUFPQyxPQUFPLElBQUksQ0FBQ0EsT0FBTyxDQUFDQyxHQUFHLENBQU8sc0JBQXNCLENBQUMsRUFBRTtNQUM3REQsT0FBTyxHQUFHQSxPQUFPLENBQUNFLFNBQVMsQ0FBQyxDQUFDO0lBQzlCO0lBQ0EsT0FBT0YsT0FBTyxJQUFJRyxTQUFTO0VBQzVCO0VBQUMsT0FFYztJQUNkO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNDQyxlQUFlQSxDQUFDQyxNQUtmLEVBQVc7TUFDWCxNQUFNO1FBQUVDLE1BQU07UUFBRUM7TUFBYyxDQUFDLEdBQUdGLE1BQU07TUFDeEMsTUFBTUcsY0FBYyxHQUFHQyxHQUFHLENBQUNDLG9CQUFvQixDQUFDLGlCQUFpQixDQUFtQjtNQUVwRixNQUFNQyxjQUFjLEdBQUdBLENBQUEsS0FBdUM7UUFDN0QsSUFBSU4sTUFBTSxDQUFDTyxXQUFXLEtBQUtULFNBQVMsRUFBRTtVQUNyQyxPQUFPLElBQUlVLElBQUksQ0FBQztZQUFFQyxJQUFJLEVBQUVULE1BQU0sQ0FBQ087VUFBWSxDQUFDLENBQUM7UUFDOUM7UUFDQSxNQUFNO1VBQUVHO1FBQVEsQ0FBQyxHQUFHVixNQUFNO1FBQzFCLE9BQU9XLEtBQUssQ0FBQ0MsT0FBTyxDQUFDRixPQUFPLENBQUMsR0FBR0EsT0FBTyxDQUFDRyxHQUFHLENBQUVDLElBQWEsSUFBS0EsSUFBSSxDQUFDQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUdMLE9BQU8sRUFBRUssS0FBSyxDQUFDLENBQUM7TUFDaEcsQ0FBQztNQUVhLE1BQU1DLElBQUksR0FBR3ZCLGFBQWEsQ0FBQ08sTUFBTSxDQUFDQyxNQUFNLENBQUM7TUFDdkQsTUFBTWdCLFNBQVMsR0FDZEMsSUFBQSxDQUFDQyxPQUFPO1FBQ1BDLEtBQUssRUFBQyxxQkFBcUI7UUFDM0JDLGVBQWUsRUFBRSxZQUFhO1FBQzlCQyxTQUFTLEVBQUUsSUFBSztRQUNoQkMsVUFBVSxFQUFFLElBQUs7UUFDakJDLFNBQVMsRUFBRXRCLGFBQWM7UUFDekJ1QixLQUFLLEVBQUV0QixjQUFjLENBQUN1QixPQUFPLENBQUMsb0JBQW9CLENBQUU7UUFDcERDLFVBQVUsRUFBRUEsQ0FBQSxLQUFZO1VBQ3ZCWCxJQUFJLEVBQUVZLGVBQWUsQ0FBQ1gsU0FBUyxDQUFDO1VBQ2hDQSxTQUFTLEVBQUVZLE9BQU8sQ0FBQyxDQUFDO1FBQ3JCLENBQUU7UUFBQUMsUUFBQSxFQUVEO1VBQ0FwQixPQUFPLEVBQUVKLGNBQWMsQ0FBQyxDQUFDO1VBQ3pCeUIsTUFBTSxFQUNMYixJQUFBLENBQUNjLGVBQWU7WUFBQUYsUUFBQSxFQUNkO2NBQ0FwQixPQUFPLEVBQ051QixLQUFBLENBQUFDLFNBQUE7Z0JBQUFKLFFBQUEsR0FDQ1osSUFBQSxDQUFDaUIsYUFBYSxJQUFFLENBQUMsRUFDakJqQixJQUFBLENBQUNrQixNQUFNO2tCQUNOM0IsSUFBSSxFQUFFTixjQUFjLENBQUN1QixPQUFPLENBQUMsbUJBQW1CLENBQUU7a0JBQ2xEVyxLQUFLLEVBQUVBLENBQUEsS0FBWTtvQkFDbEJwQixTQUFTLENBQUNxQixLQUFLLENBQUMsQ0FBQztrQkFDbEI7Z0JBQUUsQ0FDRixDQUFDO2NBQUEsQ0FDRDtZQUVKO1VBQUMsQ0FDZTtRQUVuQjtNQUFDLENBQ08sQ0FDVDtNQUNEdEIsSUFBSSxFQUFFdUIsWUFBWSxDQUFDdEIsU0FBUyxDQUFDO01BQzdCQSxTQUFTLENBQUN1QixNQUFNLENBQUN2QyxNQUFNLENBQUM7TUFDeEIsT0FBT2dCLFNBQVM7SUFDakI7RUFDRCxDQUFDO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -3,9 +3,20 @@ import Button from "sap/m/Button";
3
3
  import type { PlacementType } from "sap/m/library";
4
4
  import OverflowToolbar from "sap/m/OverflowToolbar";
5
5
  import Popover from "sap/m/Popover";
6
+ import Text from "sap/m/Text";
6
7
  import ToolbarSpacer from "sap/m/ToolbarSpacer";
8
+ import type ManagedObject from "sap/ui/base/ManagedObject";
7
9
  import type Control from "sap/ui/core/Control";
8
10
  import Lib from "sap/ui/core/Lib";
11
+ import type View from "sap/ui/core/mvc/View";
12
+
13
+ function getParentView(control: Control): View | undefined {
14
+ let current: ManagedObject | null = control;
15
+ while (current && !current.isA<View>("sap.ui.core.mvc.View")) {
16
+ current = current.getParent();
17
+ }
18
+ return current ?? undefined;
19
+ }
9
20
 
10
21
  export default {
11
22
  /**
@@ -14,12 +25,27 @@ export default {
14
25
  * @param params.parent The control that opens the popover
15
26
  * @param params.placementType Optional placement type for the popover
16
27
  * @param params.content Optional content for the popover. If not provided, default content is used.
28
+ * @param params.contentText Optional text content for the popover. Use this instead of content to support i18n binding strings.
17
29
  * @returns The generated Popover instance
18
30
  */
19
- generatePopover(params: { parent: Control; placementType?: PlacementType; content: Control | Control[] }): Popover {
20
- const { parent, placementType, content } = params;
31
+ generatePopover(params: {
32
+ parent: Control;
33
+ placementType?: PlacementType;
34
+ content?: Control | Control[];
35
+ contentText?: string;
36
+ }): Popover {
37
+ const { parent, placementType } = params;
21
38
  const resourceBundle = Lib.getResourceBundleFor("sap.fe.controls") as ResourceBundle;
22
39
 
40
+ const resolveContent = (): Control | Control[] | undefined => {
41
+ if (params.contentText !== undefined) {
42
+ return new Text({ text: params.contentText });
43
+ }
44
+ const { content } = params;
45
+ return Array.isArray(content) ? content.map((item: Control) => item.clone()) : content?.clone();
46
+ };
47
+
48
+ const view = getParentView(params.parent);
23
49
  const myPopover = (
24
50
  <Popover
25
51
  class="sapUiContentPadding"
@@ -29,11 +55,12 @@ export default {
29
55
  placement={placementType}
30
56
  title={resourceBundle.getText("M_POPOVER_AI_TITLE")}
31
57
  afterClose={(): void => {
58
+ view?.removeDependent(myPopover);
32
59
  myPopover?.destroy();
33
60
  }}
34
61
  >
35
62
  {{
36
- content: Array.isArray(content) ? content.map((item: Control) => item.clone()) : content?.clone(),
63
+ content: resolveContent(),
37
64
  footer: (
38
65
  <OverflowToolbar>
39
66
  {{
@@ -54,6 +81,7 @@ export default {
54
81
  }}
55
82
  </Popover>
56
83
  );
84
+ view?.addDependent(myPopover);
57
85
  myPopover.openBy(parent);
58
86
  return myPopover;
59
87
  }