@sap-ux/preview-middleware 0.18.11 → 0.18.14

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 (74) hide show
  1. package/dist/base/flp.js +2 -1
  2. package/dist/client/adp/api-handler.js +153 -153
  3. package/dist/client/adp/command-executor.js +75 -75
  4. package/dist/client/adp/control-utils.js +44 -44
  5. package/dist/client/adp/controllers/BaseDialog.controller.js +187 -187
  6. package/dist/client/adp/controllers/ControllerExtension.controller.js +209 -209
  7. package/dist/client/adp/controllers/ExtensionPoint.controller.js +138 -138
  8. package/dist/client/adp/controllers/FileExistsDialog.controller.js +66 -66
  9. package/dist/client/adp/dialog-factory.js +125 -125
  10. package/dist/client/adp/init-dialogs.js +107 -100
  11. package/dist/client/adp/init-dialogs.ts +15 -6
  12. package/dist/client/adp/init.ts +0 -1
  13. package/dist/client/adp/quick-actions/common/add-controller-to-page.js +55 -55
  14. package/dist/client/adp/quick-actions/common/add-controller-to-page.ts +1 -1
  15. package/dist/client/adp/quick-actions/common/create-page-action.js +51 -51
  16. package/dist/client/adp/quick-actions/common/op-add-custom-section.js +36 -36
  17. package/dist/client/adp/quick-actions/common/op-add-header-field.js +48 -48
  18. package/dist/client/adp/quick-actions/common/utils.js +18 -18
  19. package/dist/client/adp/quick-actions/control-types.js +21 -21
  20. package/dist/client/adp/quick-actions/dialog-enablement-validator.js +24 -24
  21. package/dist/client/adp/quick-actions/enablement-validator.js +4 -4
  22. package/dist/client/adp/quick-actions/fe-v2/change-table-columns.js +101 -101
  23. package/dist/client/adp/quick-actions/fe-v2/create-table-action.js +104 -104
  24. package/dist/client/adp/quick-actions/fe-v2/create-table-custom-column.js +96 -96
  25. package/dist/client/adp/quick-actions/fe-v2/lr-enable-semantic-date-range-filter-bar.js +78 -78
  26. package/dist/client/adp/quick-actions/fe-v2/lr-enable-table-filtering.js +77 -77
  27. package/dist/client/adp/quick-actions/fe-v2/lr-enable-variant-management.js +69 -69
  28. package/dist/client/adp/quick-actions/fe-v2/lr-toggle-clear-filter-bar.js +59 -59
  29. package/dist/client/adp/quick-actions/fe-v2/op-enable-empty-row-mode.js +93 -93
  30. package/dist/client/adp/quick-actions/fe-v2/op-enable-variant-management.js +84 -84
  31. package/dist/client/adp/quick-actions/fe-v2/registry.js +75 -75
  32. package/dist/client/adp/quick-actions/fe-v2/utils.js +116 -116
  33. package/dist/client/adp/quick-actions/fe-v4/change-table-columns.js +73 -73
  34. package/dist/client/adp/quick-actions/fe-v4/create-table-action.js +50 -50
  35. package/dist/client/adp/quick-actions/fe-v4/create-table-custom-column.js +46 -46
  36. package/dist/client/adp/quick-actions/fe-v4/enable-variant-management.js +81 -81
  37. package/dist/client/adp/quick-actions/fe-v4/lr-enable-semantic-date-range-filter-bar.js +56 -56
  38. package/dist/client/adp/quick-actions/fe-v4/lr-enable-table-filtering.js +82 -82
  39. package/dist/client/adp/quick-actions/fe-v4/lr-toggle-clear-filter-bar.js +53 -53
  40. package/dist/client/adp/quick-actions/fe-v4/op-enable-empty-row-mode.js +89 -89
  41. package/dist/client/adp/quick-actions/fe-v4/registry.js +58 -58
  42. package/dist/client/adp/quick-actions/fe-v4/utils.js +47 -47
  43. package/dist/client/adp/quick-actions/load.js +44 -44
  44. package/dist/client/adp/quick-actions/quick-action-base.js +53 -53
  45. package/dist/client/adp/utils.js +160 -160
  46. package/dist/client/cpe/changes/index.js +10 -10
  47. package/dist/client/cpe/changes/validator.js +39 -39
  48. package/dist/client/cpe/documentation.js +164 -164
  49. package/dist/client/cpe/feature-service.js +36 -36
  50. package/dist/client/cpe/logger.js +30 -30
  51. package/dist/client/cpe/outline/editable.js +37 -37
  52. package/dist/client/cpe/outline/nodes.js +222 -222
  53. package/dist/client/cpe/outline/service.js +12 -8
  54. package/dist/client/cpe/outline/service.ts +16 -8
  55. package/dist/client/cpe/quick-actions/quick-action-definition.js +4 -4
  56. package/dist/client/cpe/quick-actions/registry.js +143 -143
  57. package/dist/client/cpe/quick-actions/utils.js +92 -92
  58. package/dist/client/cpe/types.js +4 -4
  59. package/dist/client/cpe/ui5-utils.js +33 -33
  60. package/dist/client/cpe/utils.js +138 -138
  61. package/dist/client/flp/WorkspaceConnector.js +86 -86
  62. package/dist/client/flp/common.js +28 -28
  63. package/dist/client/flp/enableFakeConnector.js +83 -83
  64. package/dist/client/flp/initConnectors.js +30 -30
  65. package/dist/client/flp/initRta.js +178 -178
  66. package/dist/client/i18n.js +56 -56
  67. package/dist/client/messagebundle.properties +2 -1
  68. package/dist/client/thirdparty/@sap-ux-private/control-property-editor-common.js +12 -1
  69. package/dist/client/utils/application.js +32 -32
  70. package/dist/client/utils/core.js +68 -68
  71. package/dist/client/utils/error.js +19 -19
  72. package/dist/client/utils/fe-v4.js +118 -118
  73. package/dist/client/utils/version.js +104 -104
  74. package/package.json +16 -15
@@ -1,127 +1,127 @@
1
- "use strict";
2
-
3
- sap.ui.define(["sap/ui/core/Fragment", "../i18n", "./controllers/AddFragment.controller", "./controllers/AddTableColumnFragments.controller", "./controllers/ControllerExtension.controller", "./controllers/ExtensionPoint.controller", "./controllers/FileExistsDialog.controller"], function (Fragment, ___i18n, __AddFragment, __AddTableColumnFragments, __ControllerExtension, __ExtensionPoint, __FileExistsDialog) {
4
- "use strict";
5
-
6
- function _interopRequireDefault(obj) {
7
- return obj && obj.__esModule && typeof obj.default !== "undefined" ? obj.default : obj;
8
- }
9
- const getTextBundle = ___i18n["getTextBundle"];
10
- const AddFragment = _interopRequireDefault(__AddFragment);
11
- const AddTableColumnFragments = _interopRequireDefault(__AddTableColumnFragments);
12
- const ControllerExtension = _interopRequireDefault(__ControllerExtension);
13
- const ExtensionPoint = _interopRequireDefault(__ExtensionPoint);
14
- const FileExistsDialog = _interopRequireDefault(__FileExistsDialog);
15
- var DialogNames = /*#__PURE__*/function (DialogNames) {
16
- DialogNames["ADD_FRAGMENT"] = "AddFragment";
17
- DialogNames["ADD_TABLE_COLUMN_FRAGMENTS"] = "AddTableColumnFragments";
18
- DialogNames["CONTROLLER_EXTENSION"] = "ControllerExtension";
19
- DialogNames["ADD_FRAGMENT_AT_EXTENSION_POINT"] = "ExtensionPoint";
20
- DialogNames["FILE_EXISTS"] = "FileExistsDialog";
21
- return DialogNames;
22
- }(DialogNames || {});
23
- const OPEN_DIALOG_STATUS_CHANGED = 'OPEN_DIALOG_STATUS_CHANGED';
24
- class DialogFactory {
25
- static eventTarget = new EventTarget();
26
- static isDialogOpen = false;
27
- /**
28
- * Only one dialog can be open at a time. This flag indicates if a new dialog can be opened.
29
- */
30
-
31
- static get canOpenDialog() {
32
- return !this.isDialogOpen;
33
- }
34
-
35
- /**
36
- * Factory method for creating a new dialog.
37
- *
38
- * @param overlay - Control overlay.
39
- * @param rta - Runtime Authoring instance.
40
- * @param dialogName - Dialog name.
41
- * @param extensionPointData - Control ID.
42
- * @param options - Dialog options.
43
- */
44
- static async createDialog(overlay, rta, dialogName, extensionPointData) {
45
- let options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
46
- if (this.isDialogOpen) {
47
- return;
48
- }
49
- let controller;
50
- const resources = await getTextBundle();
51
- switch (dialogName) {
52
- case DialogNames.ADD_FRAGMENT:
53
- controller = new AddFragment(`open.ux.preview.client.adp.controllers.${dialogName}`, overlay, rta, {
54
- ...('aggregation' in options && {
55
- aggregation: options.aggregation
56
- }),
57
- ...('defaultAggregationArrayIndex' in options && {
58
- defaultAggregationArrayIndex: options.defaultAggregationArrayIndex
59
- }),
60
- title: resources.getText(options.title ?? 'ADP_ADD_FRAGMENT_DIALOG_TITLE')
61
- });
62
- break;
63
- case DialogNames.ADD_TABLE_COLUMN_FRAGMENTS:
64
- controller = new AddTableColumnFragments(`open.ux.preview.client.adp.controllers.${dialogName}`, overlay, rta, {
65
- ...('aggregation' in options && {
66
- aggregation: options.aggregation
67
- }),
68
- title: resources.getText(options.title ?? 'ADP_ADD_FRAGMENT_DIALOG_TITLE')
69
- });
70
- break;
71
- case DialogNames.CONTROLLER_EXTENSION:
72
- controller = new ControllerExtension(`open.ux.preview.client.adp.controllers.${dialogName}`, overlay, rta);
73
- break;
74
- case DialogNames.ADD_FRAGMENT_AT_EXTENSION_POINT:
75
- controller = new ExtensionPoint(`open.ux.preview.client.adp.controllers.${dialogName}`, overlay, rta, extensionPointData);
76
- break;
77
- case DialogNames.FILE_EXISTS:
78
- controller = new FileExistsDialog(`open.ux.preview.client.adp.controllers.${dialogName}`, options);
79
- break;
80
- }
81
- const id = dialogName === DialogNames.ADD_FRAGMENT_AT_EXTENSION_POINT ? `dialog--${dialogName}` : undefined;
82
- const dialog = await Fragment.load({
83
- name: `open.ux.preview.client.adp.ui.${dialogName}`,
84
- controller,
85
- id
86
- });
87
- this.isDialogOpen = true;
88
- dialog.attachBeforeClose(() => {
89
- this.updateStatus(false);
90
- });
91
- await controller.setup(dialog);
92
- this.updateStatus(true);
93
- }
94
-
95
- /**
96
- * Updates open dialog status.
97
- *
98
- * @param isDialogOpen Flag indicating if there is an open dialog.
99
- */
100
- static updateStatus(isDialogOpen) {
101
- this.isDialogOpen = isDialogOpen;
102
- const event = new CustomEvent(OPEN_DIALOG_STATUS_CHANGED);
103
- this.eventTarget.dispatchEvent(event);
104
- }
105
-
106
- /**
107
- * Attach event handler for OPEN_DIALOG_STATUS_CHANGED event.
108
- *
109
- * @param handler Event handler.
110
- * @returns Function that removes listener.
111
- */
112
- static onOpenDialogStatusChange(handler) {
113
- this.eventTarget.addEventListener(OPEN_DIALOG_STATUS_CHANGED, handler);
114
- return () => {
115
- this.eventTarget.removeEventListener(OPEN_DIALOG_STATUS_CHANGED, handler);
116
- };
117
- }
118
- }
119
- var __exports = {
120
- __esModule: true
121
- };
122
- __exports.DialogNames = DialogNames;
123
- __exports.OPEN_DIALOG_STATUS_CHANGED = OPEN_DIALOG_STATUS_CHANGED;
124
- __exports.DialogFactory = DialogFactory;
125
- return __exports;
1
+ "use strict";
2
+
3
+ sap.ui.define(["sap/ui/core/Fragment", "../i18n", "./controllers/AddFragment.controller", "./controllers/AddTableColumnFragments.controller", "./controllers/ControllerExtension.controller", "./controllers/ExtensionPoint.controller", "./controllers/FileExistsDialog.controller"], function (Fragment, ___i18n, __AddFragment, __AddTableColumnFragments, __ControllerExtension, __ExtensionPoint, __FileExistsDialog) {
4
+ "use strict";
5
+
6
+ function _interopRequireDefault(obj) {
7
+ return obj && obj.__esModule && typeof obj.default !== "undefined" ? obj.default : obj;
8
+ }
9
+ const getTextBundle = ___i18n["getTextBundle"];
10
+ const AddFragment = _interopRequireDefault(__AddFragment);
11
+ const AddTableColumnFragments = _interopRequireDefault(__AddTableColumnFragments);
12
+ const ControllerExtension = _interopRequireDefault(__ControllerExtension);
13
+ const ExtensionPoint = _interopRequireDefault(__ExtensionPoint);
14
+ const FileExistsDialog = _interopRequireDefault(__FileExistsDialog);
15
+ var DialogNames = /*#__PURE__*/function (DialogNames) {
16
+ DialogNames["ADD_FRAGMENT"] = "AddFragment";
17
+ DialogNames["ADD_TABLE_COLUMN_FRAGMENTS"] = "AddTableColumnFragments";
18
+ DialogNames["CONTROLLER_EXTENSION"] = "ControllerExtension";
19
+ DialogNames["ADD_FRAGMENT_AT_EXTENSION_POINT"] = "ExtensionPoint";
20
+ DialogNames["FILE_EXISTS"] = "FileExistsDialog";
21
+ return DialogNames;
22
+ }(DialogNames || {});
23
+ const OPEN_DIALOG_STATUS_CHANGED = 'OPEN_DIALOG_STATUS_CHANGED';
24
+ class DialogFactory {
25
+ static eventTarget = new EventTarget();
26
+ static isDialogOpen = false;
27
+ /**
28
+ * Only one dialog can be open at a time. This flag indicates if a new dialog can be opened.
29
+ */
30
+
31
+ static get canOpenDialog() {
32
+ return !this.isDialogOpen;
33
+ }
34
+
35
+ /**
36
+ * Factory method for creating a new dialog.
37
+ *
38
+ * @param overlay - Control overlay.
39
+ * @param rta - Runtime Authoring instance.
40
+ * @param dialogName - Dialog name.
41
+ * @param extensionPointData - Control ID.
42
+ * @param options - Dialog options.
43
+ */
44
+ static async createDialog(overlay, rta, dialogName, extensionPointData) {
45
+ let options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
46
+ if (this.isDialogOpen) {
47
+ return;
48
+ }
49
+ let controller;
50
+ const resources = await getTextBundle();
51
+ switch (dialogName) {
52
+ case DialogNames.ADD_FRAGMENT:
53
+ controller = new AddFragment(`open.ux.preview.client.adp.controllers.${dialogName}`, overlay, rta, {
54
+ ...('aggregation' in options && {
55
+ aggregation: options.aggregation
56
+ }),
57
+ ...('defaultAggregationArrayIndex' in options && {
58
+ defaultAggregationArrayIndex: options.defaultAggregationArrayIndex
59
+ }),
60
+ title: resources.getText(options.title ?? 'ADP_ADD_FRAGMENT_DIALOG_TITLE')
61
+ });
62
+ break;
63
+ case DialogNames.ADD_TABLE_COLUMN_FRAGMENTS:
64
+ controller = new AddTableColumnFragments(`open.ux.preview.client.adp.controllers.${dialogName}`, overlay, rta, {
65
+ ...('aggregation' in options && {
66
+ aggregation: options.aggregation
67
+ }),
68
+ title: resources.getText(options.title ?? 'ADP_ADD_FRAGMENT_DIALOG_TITLE')
69
+ });
70
+ break;
71
+ case DialogNames.CONTROLLER_EXTENSION:
72
+ controller = new ControllerExtension(`open.ux.preview.client.adp.controllers.${dialogName}`, overlay, rta);
73
+ break;
74
+ case DialogNames.ADD_FRAGMENT_AT_EXTENSION_POINT:
75
+ controller = new ExtensionPoint(`open.ux.preview.client.adp.controllers.${dialogName}`, overlay, rta, extensionPointData);
76
+ break;
77
+ case DialogNames.FILE_EXISTS:
78
+ controller = new FileExistsDialog(`open.ux.preview.client.adp.controllers.${dialogName}`, options);
79
+ break;
80
+ }
81
+ const id = dialogName === DialogNames.ADD_FRAGMENT_AT_EXTENSION_POINT ? `dialog--${dialogName}` : undefined;
82
+ const dialog = await Fragment.load({
83
+ name: `open.ux.preview.client.adp.ui.${dialogName}`,
84
+ controller,
85
+ id
86
+ });
87
+ this.isDialogOpen = true;
88
+ dialog.attachBeforeClose(() => {
89
+ this.updateStatus(false);
90
+ });
91
+ await controller.setup(dialog);
92
+ this.updateStatus(true);
93
+ }
94
+
95
+ /**
96
+ * Updates open dialog status.
97
+ *
98
+ * @param isDialogOpen Flag indicating if there is an open dialog.
99
+ */
100
+ static updateStatus(isDialogOpen) {
101
+ this.isDialogOpen = isDialogOpen;
102
+ const event = new CustomEvent(OPEN_DIALOG_STATUS_CHANGED);
103
+ this.eventTarget.dispatchEvent(event);
104
+ }
105
+
106
+ /**
107
+ * Attach event handler for OPEN_DIALOG_STATUS_CHANGED event.
108
+ *
109
+ * @param handler Event handler.
110
+ * @returns Function that removes listener.
111
+ */
112
+ static onOpenDialogStatusChange(handler) {
113
+ this.eventTarget.addEventListener(OPEN_DIALOG_STATUS_CHANGED, handler);
114
+ return () => {
115
+ this.eventTarget.removeEventListener(OPEN_DIALOG_STATUS_CHANGED, handler);
116
+ };
117
+ }
118
+ }
119
+ var __exports = {
120
+ __esModule: true
121
+ };
122
+ __exports.DialogNames = DialogNames;
123
+ __exports.OPEN_DIALOG_STATUS_CHANGED = OPEN_DIALOG_STATUS_CHANGED;
124
+ __exports.DialogFactory = DialogFactory;
125
+ return __exports;
126
126
  });
127
127
  //# sourceMappingURL=dialog-factory.js.map
@@ -1,102 +1,109 @@
1
- "use strict";
2
-
3
- sap.ui.define(["sap/ui/rta/util/hasStableId", "sap/ui/fl/Utils", "../cpe/utils", "./dialog-factory"], function (hasStableId, FlUtils, ___cpe_utils, ___dialog_factory) {
4
- "use strict";
5
-
6
- const isReuseComponent = ___cpe_utils["isReuseComponent"];
7
- const DialogFactory = ___dialog_factory["DialogFactory"];
8
- const DialogNames = ___dialog_factory["DialogNames"];
9
- /**
10
- * Handler for enablement of Extend With Controller context menu entry
11
- *
12
- * @param control UI5 control.
13
- * @param syncViewsIds Runtime Authoring
14
- * @param ui5VersionInfo UI5 version information
15
- *
16
- * @returns boolean whether menu item is enabled or not
17
- */
18
- function isControllerExtensionEnabledForControl(control, syncViewsIds, ui5VersionInfo) {
19
- const clickedControlId = FlUtils.getViewForControl(control).getId();
20
- const isClickedControlReuseComponent = isReuseComponent(clickedControlId, ui5VersionInfo);
21
- return !syncViewsIds.includes(clickedControlId) && !isClickedControlReuseComponent;
22
- }
23
-
24
- /**
25
- * Handler for enablement of Extend With Controller context menu entry
26
- *
27
- * @param overlays Control overlays
28
- * @param syncViewsIds Runtime Authoring
29
- * @param ui5VersionInfo UI5 version information
30
- *
31
- * @returns boolean whether menu item is enabled or not
32
- */
33
- const isControllerExtensionEnabled = (overlays, syncViewsIds, ui5VersionInfo) => {
34
- if (overlays.length === 0 || overlays.length > 1) {
35
- return false;
36
- }
37
- return isControllerExtensionEnabledForControl(overlays[0].getElement(), syncViewsIds, ui5VersionInfo);
38
- };
39
-
40
- /**
41
- * Determines whether the fragment command should be enabled based on the provided overlays.
42
- *
43
- * @param {ElementOverlay[]} overlays - An array of ElementOverlay objects representing the UI overlays.
44
- * @param ui5VersionInfo UI5 version information
45
- * @returns {boolean} True if the fragment command is enabled, false otherwise.
46
- */
47
- const isFragmentCommandEnabled = (overlays, ui5VersionInfo) => {
48
- if (overlays.length === 0 || overlays.length > 1) {
49
- return false;
50
- }
51
- const control = overlays[0].getElement();
52
- return hasStableId(overlays[0]) && !isReuseComponent(control.getId(), ui5VersionInfo);
53
- };
54
-
55
- /**
56
- * Determines the text that should be displayed for the Add Fragment context menu item.
57
- *
58
- * @param {ElementOverlay} overlay - An ElementOverlay object representing the UI overlay.
59
- * @returns {string} The text of the Add Fragment context menu item.
60
- */
61
- const getAddFragmentItemText = overlay => {
62
- if (!hasStableId(overlay)) {
63
- return 'Add: Fragment (Unavailable due to unstable ID of the control or its parent control)';
64
- }
65
- return 'Add: Fragment';
66
- };
67
-
68
- /**
69
- * Adds a new item to the context menu
70
- *
71
- * @param rta Runtime Authoring
72
- * @param syncViewsIds Ids of all application sync views
73
- * @param ui5VersionInfo UI5 version information
74
- */
75
- const initDialogs = (rta, syncViewsIds, ui5VersionInfo) => {
76
- const contextMenu = rta.getDefaultPlugins().contextMenu;
77
- contextMenu.addMenuItem({
78
- id: 'ADD_FRAGMENT',
79
- text: getAddFragmentItemText,
80
- handler: async overlays => await DialogFactory.createDialog(overlays[0], rta, DialogNames.ADD_FRAGMENT),
81
- icon: 'sap-icon://attachment-html',
82
- enabled: overlays => isFragmentCommandEnabled(overlays, ui5VersionInfo)
83
- });
84
- contextMenu.addMenuItem({
85
- id: 'EXTEND_CONTROLLER',
86
- text: 'Extend With Controller',
87
- handler: async overlays => await DialogFactory.createDialog(overlays[0], rta, DialogNames.CONTROLLER_EXTENSION),
88
- icon: 'sap-icon://create-form',
89
- enabled: overlays => isControllerExtensionEnabled(overlays, syncViewsIds, ui5VersionInfo)
90
- });
91
- };
92
- var __exports = {
93
- __esModule: true
94
- };
95
- __exports.isControllerExtensionEnabledForControl = isControllerExtensionEnabledForControl;
96
- __exports.isControllerExtensionEnabled = isControllerExtensionEnabled;
97
- __exports.isFragmentCommandEnabled = isFragmentCommandEnabled;
98
- __exports.getAddFragmentItemText = getAddFragmentItemText;
99
- __exports.initDialogs = initDialogs;
100
- return __exports;
1
+ "use strict";
2
+
3
+ sap.ui.define(["sap/ui/rta/util/hasStableId", "sap/ui/fl/Utils", "../cpe/utils", "./dialog-factory"], function (hasStableId, FlUtils, ___cpe_utils, ___dialog_factory) {
4
+ "use strict";
5
+
6
+ const isReuseComponent = ___cpe_utils["isReuseComponent"];
7
+ const DialogFactory = ___dialog_factory["DialogFactory"];
8
+ const DialogNames = ___dialog_factory["DialogNames"];
9
+ /**
10
+ * Handler for enablement of Extend With Controller context menu entry
11
+ *
12
+ * @param control UI5 control.
13
+ * @param syncViewsIds Runtime Authoring
14
+ * @param ui5VersionInfo UI5 version information
15
+ * @param isCloud Whether the application is running in the cloud
16
+ *
17
+ * @returns boolean whether menu item is enabled or not
18
+ */
19
+ function isControllerExtensionEnabledForControl(control, syncViewsIds, ui5VersionInfo, isCloud) {
20
+ const clickedControlId = FlUtils.getViewForControl(control).getId();
21
+ const isControlInSyncView = syncViewsIds.includes(clickedControlId);
22
+ if (isCloud) {
23
+ const isClickedControlReuseComponent = isReuseComponent(clickedControlId, ui5VersionInfo);
24
+ return !isControlInSyncView && !isClickedControlReuseComponent;
25
+ }
26
+ return !isControlInSyncView;
27
+ }
28
+
29
+ /**
30
+ * Handler for enablement of Extend With Controller context menu entry
31
+ *
32
+ * @param overlays Control overlays
33
+ * @param syncViewsIds Runtime Authoring
34
+ * @param ui5VersionInfo UI5 version information
35
+ * @param isCloud Whether the application is running in the cloud
36
+ *
37
+ * @returns boolean whether menu item is enabled or not
38
+ */
39
+ const isControllerExtensionEnabled = (overlays, syncViewsIds, ui5VersionInfo, isCloud) => {
40
+ if (overlays.length === 0 || overlays.length > 1) {
41
+ return false;
42
+ }
43
+ return isControllerExtensionEnabledForControl(overlays[0].getElement(), syncViewsIds, ui5VersionInfo, isCloud);
44
+ };
45
+
46
+ /**
47
+ * Determines whether the fragment command should be enabled based on the provided overlays.
48
+ *
49
+ * @param {ElementOverlay[]} overlays - An array of ElementOverlay objects representing the UI overlays.
50
+ * @param ui5VersionInfo UI5 version information
51
+ * @returns {boolean} True if the fragment command is enabled, false otherwise.
52
+ */
53
+ const isFragmentCommandEnabled = (overlays, ui5VersionInfo) => {
54
+ if (overlays.length === 0 || overlays.length > 1) {
55
+ return false;
56
+ }
57
+ const control = overlays[0].getElement();
58
+ return hasStableId(overlays[0]) && !isReuseComponent(control.getId(), ui5VersionInfo);
59
+ };
60
+
61
+ /**
62
+ * Determines the text that should be displayed for the Add Fragment context menu item.
63
+ *
64
+ * @param {ElementOverlay} overlay - An ElementOverlay object representing the UI overlay.
65
+ * @returns {string} The text of the Add Fragment context menu item.
66
+ */
67
+ const getAddFragmentItemText = overlay => {
68
+ if (!hasStableId(overlay)) {
69
+ return 'Add: Fragment (Unavailable due to unstable ID of the control or its parent control)';
70
+ }
71
+ return 'Add: Fragment';
72
+ };
73
+
74
+ /**
75
+ * Adds a new item to the context menu
76
+ *
77
+ * @param rta Runtime Authoring
78
+ * @param syncViewsIds Ids of all application sync views
79
+ * @param ui5VersionInfo UI5 version information
80
+ */
81
+ const initDialogs = (rta, syncViewsIds, ui5VersionInfo) => {
82
+ const contextMenu = rta.getDefaultPlugins().contextMenu;
83
+ const isCloud = rta.getFlexSettings().isCloud;
84
+ contextMenu.addMenuItem({
85
+ id: 'ADD_FRAGMENT',
86
+ text: getAddFragmentItemText,
87
+ handler: async overlays => await DialogFactory.createDialog(overlays[0], rta, DialogNames.ADD_FRAGMENT),
88
+ icon: 'sap-icon://attachment-html',
89
+ enabled: overlays => isFragmentCommandEnabled(overlays, ui5VersionInfo)
90
+ });
91
+ contextMenu.addMenuItem({
92
+ id: 'EXTEND_CONTROLLER',
93
+ text: 'Extend With Controller',
94
+ handler: async overlays => await DialogFactory.createDialog(overlays[0], rta, DialogNames.CONTROLLER_EXTENSION),
95
+ icon: 'sap-icon://create-form',
96
+ enabled: overlays => isControllerExtensionEnabled(overlays, syncViewsIds, ui5VersionInfo, isCloud)
97
+ });
98
+ };
99
+ var __exports = {
100
+ __esModule: true
101
+ };
102
+ __exports.isControllerExtensionEnabledForControl = isControllerExtensionEnabledForControl;
103
+ __exports.isControllerExtensionEnabled = isControllerExtensionEnabled;
104
+ __exports.isFragmentCommandEnabled = isFragmentCommandEnabled;
105
+ __exports.getAddFragmentItemText = getAddFragmentItemText;
106
+ __exports.initDialogs = initDialogs;
107
+ return __exports;
101
108
  });
102
109
  //# sourceMappingURL=init-dialogs.js.map
@@ -22,18 +22,24 @@ import { DialogFactory, DialogNames } from './dialog-factory';
22
22
  * @param control UI5 control.
23
23
  * @param syncViewsIds Runtime Authoring
24
24
  * @param ui5VersionInfo UI5 version information
25
+ * @param isCloud Whether the application is running in the cloud
25
26
  *
26
27
  * @returns boolean whether menu item is enabled or not
27
28
  */
28
29
  export function isControllerExtensionEnabledForControl(
29
30
  control: ManagedObject,
30
31
  syncViewsIds: string[],
31
- ui5VersionInfo: Ui5VersionInfo
32
+ ui5VersionInfo: Ui5VersionInfo,
33
+ isCloud: boolean
32
34
  ): boolean {
33
35
  const clickedControlId = FlUtils.getViewForControl(control).getId();
34
- const isClickedControlReuseComponent = isReuseComponent(clickedControlId, ui5VersionInfo);
36
+ const isControlInSyncView = syncViewsIds.includes(clickedControlId);
35
37
 
36
- return !syncViewsIds.includes(clickedControlId) && !isClickedControlReuseComponent;
38
+ if(isCloud) {
39
+ const isClickedControlReuseComponent = isReuseComponent(clickedControlId, ui5VersionInfo);
40
+ return !isControlInSyncView && !isClickedControlReuseComponent;
41
+ }
42
+ return !isControlInSyncView;
37
43
  }
38
44
 
39
45
  /**
@@ -42,18 +48,20 @@ export function isControllerExtensionEnabledForControl(
42
48
  * @param overlays Control overlays
43
49
  * @param syncViewsIds Runtime Authoring
44
50
  * @param ui5VersionInfo UI5 version information
51
+ * @param isCloud Whether the application is running in the cloud
45
52
  *
46
53
  * @returns boolean whether menu item is enabled or not
47
54
  */
48
55
  export const isControllerExtensionEnabled = (
49
56
  overlays: ElementOverlay[],
50
57
  syncViewsIds: string[],
51
- ui5VersionInfo: Ui5VersionInfo
58
+ ui5VersionInfo: Ui5VersionInfo,
59
+ isCloud: boolean
52
60
  ): boolean => {
53
61
  if (overlays.length === 0 || overlays.length > 1) {
54
62
  return false;
55
63
  }
56
- return isControllerExtensionEnabledForControl(overlays[0].getElement(), syncViewsIds, ui5VersionInfo);
64
+ return isControllerExtensionEnabledForControl(overlays[0].getElement(), syncViewsIds, ui5VersionInfo, isCloud);
57
65
  };
58
66
 
59
67
  /**
@@ -96,6 +104,7 @@ export const getAddFragmentItemText = (overlay: ElementOverlay) => {
96
104
  */
97
105
  export const initDialogs = (rta: RuntimeAuthoring, syncViewsIds: string[], ui5VersionInfo: Ui5VersionInfo): void => {
98
106
  const contextMenu = rta.getDefaultPlugins().contextMenu;
107
+ const isCloud = rta.getFlexSettings().isCloud;
99
108
 
100
109
  contextMenu.addMenuItem({
101
110
  id: 'ADD_FRAGMENT',
@@ -112,6 +121,6 @@ export const initDialogs = (rta: RuntimeAuthoring, syncViewsIds: string[], ui5Ve
112
121
  handler: async (overlays: UI5Element[]) =>
113
122
  await DialogFactory.createDialog(overlays[0], rta, DialogNames.CONTROLLER_EXTENSION),
114
123
  icon: 'sap-icon://create-form',
115
- enabled: (overlays: ElementOverlay[]) => isControllerExtensionEnabled(overlays, syncViewsIds, ui5VersionInfo)
124
+ enabled: (overlays: ElementOverlay[]) => isControllerExtensionEnabled(overlays, syncViewsIds, ui5VersionInfo, isCloud)
116
125
  });
117
126
  };
@@ -20,7 +20,6 @@ export default async function (rta: RuntimeAuthoring) {
20
20
  enableTelemetry();
21
21
  }
22
22
 
23
-
24
23
  const ui5VersionInfo = await getUi5Version();
25
24
  const syncViewsIds = await getAllSyncViewsIds(ui5VersionInfo);
26
25
  initDialogs(rta, syncViewsIds, ui5VersionInfo);