@sapui5/sap.fe.controls 1.148.0 → 1.149.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 (66) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/controls/.library +1 -1
  3. package/src/sap/fe/controls/AiNoticeHelper.js +26 -5
  4. package/src/sap/fe/controls/AiNoticeHelper.tsx +31 -3
  5. package/src/sap/fe/controls/easyFilter/EasyFilterBarContainer.js +68 -44
  6. package/src/sap/fe/controls/easyFilter/EasyFilterBarContainer.tsx +35 -4
  7. package/src/sap/fe/controls/easyFilter/EasyFilterInput.js +103 -19
  8. package/src/sap/fe/controls/easyFilter/EasyFilterInput.tsx +100 -7
  9. package/src/sap/fe/controls/easyFilter/Token.js +4 -4
  10. package/src/sap/fe/controls/easyFilter/innerControls/MenuWithSingleSelectFactory.js +2 -2
  11. package/src/sap/fe/controls/easyFilter/innerControls/ValueHelpPreviewFactory.js +7 -3
  12. package/src/sap/fe/controls/easyFilter/innerControls/ValueHelpPreviewFactory.ts +5 -0
  13. package/src/sap/fe/controls/library.js +1 -1
  14. package/src/sap/fe/controls/messagebundle.properties +4 -0
  15. package/src/sap/fe/controls/messagebundle_ar.properties +9 -3
  16. package/src/sap/fe/controls/messagebundle_bg.properties +9 -3
  17. package/src/sap/fe/controls/messagebundle_ca.properties +9 -3
  18. package/src/sap/fe/controls/messagebundle_cnr.properties +9 -3
  19. package/src/sap/fe/controls/messagebundle_cs.properties +9 -3
  20. package/src/sap/fe/controls/messagebundle_cy.properties +9 -3
  21. package/src/sap/fe/controls/messagebundle_da.properties +9 -3
  22. package/src/sap/fe/controls/messagebundle_de.properties +9 -3
  23. package/src/sap/fe/controls/messagebundle_el.properties +9 -3
  24. package/src/sap/fe/controls/messagebundle_en.properties +9 -3
  25. package/src/sap/fe/controls/messagebundle_en_GB.properties +9 -3
  26. package/src/sap/fe/controls/messagebundle_en_US_saprigi.properties +6 -3
  27. package/src/sap/fe/controls/messagebundle_es.properties +9 -3
  28. package/src/sap/fe/controls/messagebundle_es_MX.properties +9 -3
  29. package/src/sap/fe/controls/messagebundle_et.properties +9 -3
  30. package/src/sap/fe/controls/messagebundle_fi.properties +9 -3
  31. package/src/sap/fe/controls/messagebundle_fr.properties +9 -3
  32. package/src/sap/fe/controls/messagebundle_fr_CA.properties +9 -3
  33. package/src/sap/fe/controls/messagebundle_hi.properties +9 -3
  34. package/src/sap/fe/controls/messagebundle_hr.properties +9 -3
  35. package/src/sap/fe/controls/messagebundle_hu.properties +7 -1
  36. package/src/sap/fe/controls/messagebundle_id.properties +9 -3
  37. package/src/sap/fe/controls/messagebundle_it.properties +9 -3
  38. package/src/sap/fe/controls/messagebundle_iw.properties +9 -3
  39. package/src/sap/fe/controls/messagebundle_ja.properties +9 -3
  40. package/src/sap/fe/controls/messagebundle_kk.properties +9 -3
  41. package/src/sap/fe/controls/messagebundle_ko.properties +9 -3
  42. package/src/sap/fe/controls/messagebundle_lt.properties +9 -3
  43. package/src/sap/fe/controls/messagebundle_lv.properties +9 -3
  44. package/src/sap/fe/controls/messagebundle_mk.properties +9 -3
  45. package/src/sap/fe/controls/messagebundle_ms.properties +9 -3
  46. package/src/sap/fe/controls/messagebundle_nl.properties +9 -3
  47. package/src/sap/fe/controls/messagebundle_no.properties +7 -1
  48. package/src/sap/fe/controls/messagebundle_pl.properties +7 -1
  49. package/src/sap/fe/controls/messagebundle_pt.properties +9 -3
  50. package/src/sap/fe/controls/messagebundle_pt_PT.properties +9 -3
  51. package/src/sap/fe/controls/messagebundle_ro.properties +9 -3
  52. package/src/sap/fe/controls/messagebundle_ru.properties +9 -3
  53. package/src/sap/fe/controls/messagebundle_sh.properties +9 -3
  54. package/src/sap/fe/controls/messagebundle_sk.properties +9 -3
  55. package/src/sap/fe/controls/messagebundle_sl.properties +9 -3
  56. package/src/sap/fe/controls/messagebundle_sr.properties +9 -3
  57. package/src/sap/fe/controls/messagebundle_sv.properties +9 -3
  58. package/src/sap/fe/controls/messagebundle_th.properties +10 -4
  59. package/src/sap/fe/controls/messagebundle_tr.properties +9 -3
  60. package/src/sap/fe/controls/messagebundle_uk.properties +9 -3
  61. package/src/sap/fe/controls/messagebundle_vi.properties +9 -3
  62. package/src/sap/fe/controls/messagebundle_zh_CN.properties +9 -3
  63. package/src/sap/fe/controls/messagebundle_zh_TW.properties +9 -3
  64. package/src/sap/fe/controls/shortcuts/ShortcutExplanationProvider.js +2 -5
  65. package/src/sap/fe/controls/shortcuts/popup/ShortcutTool.js +5 -8
  66. package/src/sap/fe/controls/themes/base/EasyFilter.less +8 -4
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.149.0",
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.149.0</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
  }