@sap-ux/preview-middleware 0.20.0 → 0.20.2

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 (96) hide show
  1. package/dist/client/adp/add-fragment.js +46 -46
  2. package/dist/client/adp/api-handler.js +159 -159
  3. package/dist/client/adp/command-executor.js +75 -75
  4. package/dist/client/adp/command-executor.ts +4 -4
  5. package/dist/client/adp/control-utils.js +44 -44
  6. package/dist/client/adp/controllers/AddFragment.controller.js +1 -1
  7. package/dist/client/adp/controllers/AddFragment.controller.ts +2 -2
  8. package/dist/client/adp/controllers/AddTableColumnFragments.controller.js +1 -1
  9. package/dist/client/adp/controllers/AddTableColumnFragments.controller.ts +2 -2
  10. package/dist/client/adp/controllers/BaseDialog.controller.js +2 -13
  11. package/dist/client/adp/controllers/BaseDialog.controller.ts +7 -25
  12. package/dist/client/adp/controllers/ControllerExtension.controller.js +268 -210
  13. package/dist/client/adp/controllers/ControllerExtension.controller.ts +110 -22
  14. package/dist/client/adp/controllers/ExtensionPoint.controller.js +139 -139
  15. package/dist/client/adp/controllers/FileExistsDialog.controller.js +66 -66
  16. package/dist/client/adp/dialog-factory.js +135 -135
  17. package/dist/client/adp/dialog-factory.ts +3 -1
  18. package/dist/client/adp/extend-controller.js +48 -0
  19. package/dist/client/adp/extend-controller.ts +49 -0
  20. package/dist/client/adp/init-dialogs.js +143 -163
  21. package/dist/client/adp/init-dialogs.ts +42 -20
  22. package/dist/client/adp/init.js +9 -1
  23. package/dist/client/adp/init.ts +6 -1
  24. package/dist/client/adp/quick-actions/add-new-subpage-quick-action-base.js +96 -96
  25. package/dist/client/adp/quick-actions/common/add-controller-to-page.js +74 -60
  26. package/dist/client/adp/quick-actions/common/add-controller-to-page.ts +25 -3
  27. package/dist/client/adp/quick-actions/common/create-page-action.js +54 -54
  28. package/dist/client/adp/quick-actions/common/op-add-custom-section.js +39 -39
  29. package/dist/client/adp/quick-actions/common/op-add-header-field.js +67 -67
  30. package/dist/client/adp/quick-actions/common/utils.js +18 -18
  31. package/dist/client/adp/quick-actions/control-types.js +23 -23
  32. package/dist/client/adp/quick-actions/dialog-enablement-validator.js +24 -24
  33. package/dist/client/adp/quick-actions/enablement-validator.js +4 -4
  34. package/dist/client/adp/quick-actions/fe-v2/add-new-subpage.js +81 -81
  35. package/dist/client/adp/quick-actions/fe-v2/change-table-actions.js +67 -67
  36. package/dist/client/adp/quick-actions/fe-v2/change-table-columns.js +101 -101
  37. package/dist/client/adp/quick-actions/fe-v2/create-table-action.js +107 -107
  38. package/dist/client/adp/quick-actions/fe-v2/create-table-custom-column.js +99 -99
  39. package/dist/client/adp/quick-actions/fe-v2/lr-enable-semantic-date-range-filter-bar.js +78 -78
  40. package/dist/client/adp/quick-actions/fe-v2/lr-enable-table-filtering.js +77 -77
  41. package/dist/client/adp/quick-actions/fe-v2/lr-enable-variant-management.js +69 -69
  42. package/dist/client/adp/quick-actions/fe-v2/lr-toggle-clear-filter-bar.js +59 -59
  43. package/dist/client/adp/quick-actions/fe-v2/op-enable-empty-row-mode.js +93 -93
  44. package/dist/client/adp/quick-actions/fe-v2/op-enable-variant-management.js +84 -84
  45. package/dist/client/adp/quick-actions/fe-v2/registry.js +77 -77
  46. package/dist/client/adp/quick-actions/fe-v2/utils.js +116 -116
  47. package/dist/client/adp/quick-actions/fe-v4/add-new-subpage.js +138 -138
  48. package/dist/client/adp/quick-actions/fe-v4/change-table-actions.js +79 -79
  49. package/dist/client/adp/quick-actions/fe-v4/change-table-columns.js +75 -75
  50. package/dist/client/adp/quick-actions/fe-v4/create-table-action.js +53 -53
  51. package/dist/client/adp/quick-actions/fe-v4/create-table-custom-column.js +49 -49
  52. package/dist/client/adp/quick-actions/fe-v4/enable-variant-management.js +81 -81
  53. package/dist/client/adp/quick-actions/fe-v4/lr-enable-semantic-date-range-filter-bar.js +56 -56
  54. package/dist/client/adp/quick-actions/fe-v4/lr-enable-table-filtering.js +84 -84
  55. package/dist/client/adp/quick-actions/fe-v4/lr-toggle-clear-filter-bar.js +53 -53
  56. package/dist/client/adp/quick-actions/fe-v4/op-enable-empty-row-mode.js +89 -89
  57. package/dist/client/adp/quick-actions/fe-v4/registry.js +60 -60
  58. package/dist/client/adp/quick-actions/fe-v4/utils.js +72 -72
  59. package/dist/client/adp/quick-actions/load.js +44 -44
  60. package/dist/client/adp/quick-actions/quick-action-base.js +64 -64
  61. package/dist/client/adp/ui/ControllerExtension.fragment.xml +14 -3
  62. package/dist/client/adp/utils.js +259 -218
  63. package/dist/client/adp/utils.ts +55 -7
  64. package/dist/client/cpe/additional-change-info/add-xml-additional-info.js +75 -75
  65. package/dist/client/cpe/changes/generic-change.js +326 -326
  66. package/dist/client/cpe/changes/index.js +10 -10
  67. package/dist/client/cpe/changes/validator.js +39 -39
  68. package/dist/client/cpe/connector-service.ts +1 -0
  69. package/dist/client/cpe/documentation.js +164 -164
  70. package/dist/client/cpe/feature-service.js +36 -36
  71. package/dist/client/cpe/logger.js +30 -30
  72. package/dist/client/cpe/outline/editable.js +37 -37
  73. package/dist/client/cpe/outline/nodes.js +203 -203
  74. package/dist/client/cpe/quick-actions/quick-action-definition.js +4 -4
  75. package/dist/client/cpe/quick-actions/registry.js +143 -143
  76. package/dist/client/cpe/quick-actions/utils.js +92 -92
  77. package/dist/client/cpe/types.js +4 -4
  78. package/dist/client/cpe/ui5-utils.js +33 -33
  79. package/dist/client/cpe/utils.js +111 -111
  80. package/dist/client/flp/WorkspaceConnector.js +92 -92
  81. package/dist/client/flp/common.js +28 -28
  82. package/dist/client/flp/enableFakeConnector.js +89 -89
  83. package/dist/client/flp/homepage/Component.js +14 -14
  84. package/dist/client/flp/initCdm.js +117 -117
  85. package/dist/client/flp/initConnectors.js +28 -28
  86. package/dist/client/flp/initRta.js +178 -178
  87. package/dist/client/i18n.js +56 -56
  88. package/dist/client/messagebundle.properties +5 -0
  89. package/dist/client/utils/additional-change-info.js +54 -54
  90. package/dist/client/utils/application.js +32 -32
  91. package/dist/client/utils/core.js +84 -84
  92. package/dist/client/utils/error.js +19 -19
  93. package/dist/client/utils/fe-v2.js +56 -56
  94. package/dist/client/utils/fe-v4.js +140 -140
  95. package/dist/client/utils/version.js +104 -104
  96. package/package.json +4 -4
@@ -1,137 +1,137 @@
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", "./controllers/AddSubpage.controller"], function (Fragment, ___i18n, __AddFragment, __AddTableColumnFragments, __ControllerExtension, __ExtensionPoint, __FileExistsDialog, __AddSubpage) {
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
- const AddSubpage = _interopRequireDefault(__AddSubpage);
16
- var DialogNames = /*#__PURE__*/function (DialogNames) {
17
- DialogNames["ADD_FRAGMENT"] = "AddFragment";
18
- DialogNames["ADD_TABLE_COLUMN_FRAGMENTS"] = "AddTableColumnFragments";
19
- DialogNames["CONTROLLER_EXTENSION"] = "ControllerExtension";
20
- DialogNames["ADD_FRAGMENT_AT_EXTENSION_POINT"] = "ExtensionPoint";
21
- DialogNames["FILE_EXISTS"] = "FileExistsDialog";
22
- DialogNames["ADD_SUBPAGE"] = "AddSubpage";
23
- return DialogNames;
24
- }(DialogNames || {});
25
- const OPEN_DIALOG_STATUS_CHANGED = 'OPEN_DIALOG_STATUS_CHANGED';
26
- class DialogFactory {
27
- static eventTarget = new EventTarget();
28
- static isDialogOpen = false;
29
- /**
30
- * Only one dialog can be open at a time. This flag indicates if a new dialog can be opened.
31
- */
32
-
33
- static get canOpenDialog() {
34
- return !this.isDialogOpen;
35
- }
36
-
37
- /**
38
- * Factory method for creating a new dialog.
39
- *
40
- * @param overlay - Control overlay.
41
- * @param rta - Runtime Authoring instance.
42
- * @param dialogName - Dialog name.
43
- * @param data - Data to be passed to the dialog.
44
- * @param options - Dialog options.
45
- * @param telemetryData - Telemetry data.
46
- */
47
- static async createDialog(overlay, rta, dialogName, data) {
48
- let options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
49
- let telemetryData = arguments.length > 5 ? arguments[5] : undefined;
50
- if (this.isDialogOpen) {
51
- return;
52
- }
53
- let controller;
54
- const resources = await getTextBundle();
55
- switch (dialogName) {
56
- case DialogNames.ADD_FRAGMENT:
57
- controller = new AddFragment(`open.ux.preview.client.adp.controllers.${dialogName}`, overlay, rta, {
58
- ...('aggregation' in options && {
59
- aggregation: options.aggregation
60
- }),
61
- ...('defaultAggregationArrayIndex' in options && {
62
- defaultAggregationArrayIndex: options.defaultAggregationArrayIndex
63
- }),
64
- title: resources.getText(options.title ?? 'ADP_ADD_FRAGMENT_DIALOG_TITLE')
65
- }, data, telemetryData);
66
- break;
67
- case DialogNames.ADD_TABLE_COLUMN_FRAGMENTS:
68
- controller = new AddTableColumnFragments(`open.ux.preview.client.adp.controllers.${dialogName}`, overlay, rta, {
69
- ...('aggregation' in options && {
70
- aggregation: options.aggregation
71
- }),
72
- title: resources.getText(options.title ?? 'ADP_ADD_FRAGMENT_DIALOG_TITLE')
73
- }, telemetryData);
74
- break;
75
- case DialogNames.CONTROLLER_EXTENSION:
76
- controller = new ControllerExtension(`open.ux.preview.client.adp.controllers.${dialogName}`, overlay, rta, telemetryData);
77
- break;
78
- case DialogNames.ADD_FRAGMENT_AT_EXTENSION_POINT:
79
- controller = new ExtensionPoint(`open.ux.preview.client.adp.controllers.${dialogName}`, overlay, rta, data);
80
- break;
81
- case DialogNames.FILE_EXISTS:
82
- controller = new FileExistsDialog(`open.ux.preview.client.adp.controllers.${dialogName}`, options);
83
- break;
84
- case DialogNames.ADD_SUBPAGE:
85
- controller = new AddSubpage(`open.ux.preview.client.adp.controllers.${dialogName}`, overlay, rta, {
86
- ...options,
87
- title: resources.getText(options.title ?? 'ADD_SUB_PAGE_DIALOG_TITLE')
88
- });
89
- break;
90
- }
91
- const id = dialogName === DialogNames.ADD_FRAGMENT_AT_EXTENSION_POINT ? `dialog--${dialogName}` : undefined;
92
- const dialog = await Fragment.load({
93
- name: `open.ux.preview.client.adp.ui.${dialogName}`,
94
- controller,
95
- id
96
- });
97
- this.isDialogOpen = true;
98
- dialog.attachBeforeClose(() => {
99
- this.updateStatus(false);
100
- });
101
- await controller.setup(dialog);
102
- this.updateStatus(true);
103
- }
104
-
105
- /**
106
- * Updates open dialog status.
107
- *
108
- * @param isDialogOpen Flag indicating if there is an open dialog.
109
- */
110
- static updateStatus(isDialogOpen) {
111
- this.isDialogOpen = isDialogOpen;
112
- const event = new CustomEvent(OPEN_DIALOG_STATUS_CHANGED);
113
- this.eventTarget.dispatchEvent(event);
114
- }
115
-
116
- /**
117
- * Attach event handler for OPEN_DIALOG_STATUS_CHANGED event.
118
- *
119
- * @param handler Event handler.
120
- * @returns Function that removes listener.
121
- */
122
- static onOpenDialogStatusChange(handler) {
123
- this.eventTarget.addEventListener(OPEN_DIALOG_STATUS_CHANGED, handler);
124
- return () => {
125
- this.eventTarget.removeEventListener(OPEN_DIALOG_STATUS_CHANGED, handler);
126
- };
127
- }
128
- }
129
- var __exports = {
130
- __esModule: true
131
- };
132
- __exports.DialogNames = DialogNames;
133
- __exports.OPEN_DIALOG_STATUS_CHANGED = OPEN_DIALOG_STATUS_CHANGED;
134
- __exports.DialogFactory = DialogFactory;
135
- 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", "./controllers/AddSubpage.controller"], function (Fragment, ___i18n, __AddFragment, __AddTableColumnFragments, __ControllerExtension, __ExtensionPoint, __FileExistsDialog, __AddSubpage) {
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
+ const AddSubpage = _interopRequireDefault(__AddSubpage);
16
+ var DialogNames = /*#__PURE__*/function (DialogNames) {
17
+ DialogNames["ADD_FRAGMENT"] = "AddFragment";
18
+ DialogNames["ADD_TABLE_COLUMN_FRAGMENTS"] = "AddTableColumnFragments";
19
+ DialogNames["CONTROLLER_EXTENSION"] = "ControllerExtension";
20
+ DialogNames["ADD_FRAGMENT_AT_EXTENSION_POINT"] = "ExtensionPoint";
21
+ DialogNames["FILE_EXISTS"] = "FileExistsDialog";
22
+ DialogNames["ADD_SUBPAGE"] = "AddSubpage";
23
+ return DialogNames;
24
+ }(DialogNames || {});
25
+ const OPEN_DIALOG_STATUS_CHANGED = 'OPEN_DIALOG_STATUS_CHANGED';
26
+ class DialogFactory {
27
+ static eventTarget = new EventTarget();
28
+ static isDialogOpen = false;
29
+ /**
30
+ * Only one dialog can be open at a time. This flag indicates if a new dialog can be opened.
31
+ */
32
+
33
+ static get canOpenDialog() {
34
+ return !this.isDialogOpen;
35
+ }
36
+
37
+ /**
38
+ * Factory method for creating a new dialog.
39
+ *
40
+ * @param overlay - Control overlay.
41
+ * @param rta - Runtime Authoring instance.
42
+ * @param dialogName - Dialog name.
43
+ * @param data - Data to be passed to the dialog.
44
+ * @param options - Dialog options.
45
+ * @param telemetryData - Telemetry data.
46
+ */
47
+ static async createDialog(overlay, rta, dialogName, data) {
48
+ let options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
49
+ let telemetryData = arguments.length > 5 ? arguments[5] : undefined;
50
+ if (this.isDialogOpen) {
51
+ return;
52
+ }
53
+ let controller;
54
+ const resources = await getTextBundle();
55
+ switch (dialogName) {
56
+ case DialogNames.ADD_FRAGMENT:
57
+ controller = new AddFragment(`open.ux.preview.client.adp.controllers.${dialogName}`, overlay, rta, {
58
+ ...('aggregation' in options && {
59
+ aggregation: options.aggregation
60
+ }),
61
+ ...('defaultAggregationArrayIndex' in options && {
62
+ defaultAggregationArrayIndex: options.defaultAggregationArrayIndex
63
+ }),
64
+ title: resources.getText(options.title ?? 'ADP_ADD_FRAGMENT_DIALOG_TITLE')
65
+ }, data, telemetryData);
66
+ break;
67
+ case DialogNames.ADD_TABLE_COLUMN_FRAGMENTS:
68
+ controller = new AddTableColumnFragments(`open.ux.preview.client.adp.controllers.${dialogName}`, overlay, rta, {
69
+ ...('aggregation' in options && {
70
+ aggregation: options.aggregation
71
+ }),
72
+ title: resources.getText(options.title ?? 'ADP_ADD_FRAGMENT_DIALOG_TITLE')
73
+ }, telemetryData);
74
+ break;
75
+ case DialogNames.CONTROLLER_EXTENSION:
76
+ controller = new ControllerExtension(`open.ux.preview.client.adp.controllers.${dialogName}`, overlay, rta, data, telemetryData);
77
+ break;
78
+ case DialogNames.ADD_FRAGMENT_AT_EXTENSION_POINT:
79
+ controller = new ExtensionPoint(`open.ux.preview.client.adp.controllers.${dialogName}`, overlay, rta, data);
80
+ break;
81
+ case DialogNames.FILE_EXISTS:
82
+ controller = new FileExistsDialog(`open.ux.preview.client.adp.controllers.${dialogName}`, options);
83
+ break;
84
+ case DialogNames.ADD_SUBPAGE:
85
+ controller = new AddSubpage(`open.ux.preview.client.adp.controllers.${dialogName}`, overlay, rta, {
86
+ ...options,
87
+ title: resources.getText(options.title ?? 'ADD_SUB_PAGE_DIALOG_TITLE')
88
+ });
89
+ break;
90
+ }
91
+ const id = dialogName === DialogNames.ADD_FRAGMENT_AT_EXTENSION_POINT ? `dialog--${dialogName}` : undefined;
92
+ const dialog = await Fragment.load({
93
+ name: `open.ux.preview.client.adp.ui.${dialogName}`,
94
+ controller,
95
+ id
96
+ });
97
+ this.isDialogOpen = true;
98
+ dialog.attachBeforeClose(() => {
99
+ this.updateStatus(false);
100
+ });
101
+ await controller.setup(dialog);
102
+ this.updateStatus(true);
103
+ }
104
+
105
+ /**
106
+ * Updates open dialog status.
107
+ *
108
+ * @param isDialogOpen Flag indicating if there is an open dialog.
109
+ */
110
+ static updateStatus(isDialogOpen) {
111
+ this.isDialogOpen = isDialogOpen;
112
+ const event = new CustomEvent(OPEN_DIALOG_STATUS_CHANGED);
113
+ this.eventTarget.dispatchEvent(event);
114
+ }
115
+
116
+ /**
117
+ * Attach event handler for OPEN_DIALOG_STATUS_CHANGED event.
118
+ *
119
+ * @param handler Event handler.
120
+ * @returns Function that removes listener.
121
+ */
122
+ static onOpenDialogStatusChange(handler) {
123
+ this.eventTarget.addEventListener(OPEN_DIALOG_STATUS_CHANGED, handler);
124
+ return () => {
125
+ this.eventTarget.removeEventListener(OPEN_DIALOG_STATUS_CHANGED, handler);
126
+ };
127
+ }
128
+ }
129
+ var __exports = {
130
+ __esModule: true
131
+ };
132
+ __exports.DialogNames = DialogNames;
133
+ __exports.OPEN_DIALOG_STATUS_CHANGED = OPEN_DIALOG_STATUS_CHANGED;
134
+ __exports.DialogFactory = DialogFactory;
135
+ return __exports;
136
136
  });
137
137
  //# sourceMappingURL=dialog-factory.js.map
@@ -12,6 +12,7 @@ import ExtensionPoint from './controllers/ExtensionPoint.controller';
12
12
 
13
13
  import type { ExtensionPointData } from './extension-point';
14
14
  import { AddFragmentData } from './add-fragment';
15
+ import { ExtendControllerData } from './extend-controller';
15
16
  import FileExistsDialog, { FileExistsDialogOptions } from './controllers/FileExistsDialog.controller';
16
17
  import AddSubpage, { AddSubpageOptions } from './controllers/AddSubpage.controller';
17
18
  import { QuickActionTelemetryData } from '../cpe/quick-actions/quick-action-definition';
@@ -33,7 +34,7 @@ type Controller =
33
34
  | FileExistsDialog
34
35
  | AddSubpage;
35
36
 
36
- type DialogData = ExtensionPointData | AddFragmentData;
37
+ type DialogData = ExtensionPointData | AddFragmentData | ExtendControllerData;
37
38
 
38
39
  export const OPEN_DIALOG_STATUS_CHANGED = 'OPEN_DIALOG_STATUS_CHANGED';
39
40
 
@@ -106,6 +107,7 @@ export class DialogFactory {
106
107
  `open.ux.preview.client.adp.controllers.${dialogName}`,
107
108
  overlay,
108
109
  rta,
110
+ (data as ExtendControllerData),
109
111
  telemetryData
110
112
  );
111
113
  break;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ sap.ui.define(["sap/ui/rta/command/CommandFactory", "./utils", "./dialog-factory", "sap/ui/rta/plugin/ExtendControllerPlugin"], function (CommandFactory, ___utils, ___dialog_factory, ExtendController) {
4
+ "use strict";
5
+
6
+ const createDeferred = ___utils["createDeferred"];
7
+ const DialogFactory = ___dialog_factory["DialogFactory"];
8
+ const DialogNames = ___dialog_factory["DialogNames"];
9
+ /**
10
+ * Initializes the ExtendControllerPlugin and includes it in the Runtime Authoring (RTA) plugins.
11
+ *
12
+ * @param rta Runtime Authoring instance
13
+ */
14
+ function initExtendControllerPlugin(rta) {
15
+ const flexSettings = rta.getFlexSettings();
16
+ const commandFactory = new CommandFactory({
17
+ flexSettings
18
+ });
19
+ const plugin = new ExtendController({
20
+ commandFactory,
21
+ handlerFunction: async overlay => await handlerFunction(rta, overlay)
22
+ });
23
+ const plugins = rta.getPlugins();
24
+ plugins.extendControllerPlugin = plugin;
25
+ rta.setPlugins(plugins);
26
+ }
27
+
28
+ /**
29
+ * Handles the creation of a controller extension by opening a dialog and resolving the deferred data.
30
+ *
31
+ * @param rta Runtime Authoring instance
32
+ * @param overlay UI5 Element overlay
33
+ * @returns A promise that resolves with DeferredXmlFragmentData
34
+ */
35
+ async function handlerFunction(rta, overlay) {
36
+ const deferred = createDeferred();
37
+ await DialogFactory.createDialog(overlay, rta, DialogNames.CONTROLLER_EXTENSION, {
38
+ deferred
39
+ });
40
+ return deferred.promise;
41
+ }
42
+ var __exports = {
43
+ __esModule: true
44
+ };
45
+ __exports.initExtendControllerPlugin = initExtendControllerPlugin;
46
+ return __exports;
47
+ });
48
+ //# sourceMappingURL=extend-controller.js.map
@@ -0,0 +1,49 @@
1
+ import type RuntimeAuthoring from 'sap/ui/rta/RuntimeAuthoring';
2
+ import type UI5Element from 'sap/ui/core/Element';
3
+ import CommandFactory from 'sap/ui/rta/command/CommandFactory';
4
+ import { Deferred, createDeferred } from './utils';
5
+ import { DialogFactory, DialogNames } from './dialog-factory';
6
+ import ExtendController from 'sap/ui/rta/plugin/ExtendControllerPlugin';
7
+
8
+ export interface ExtendControllerData {
9
+ deferred: Deferred<DeferredExtendControllerData>;
10
+ }
11
+
12
+ export type DeferredExtendControllerData = {
13
+ codeRef: string;
14
+ viewId: string;
15
+ };
16
+
17
+ /**
18
+ * Initializes the ExtendControllerPlugin and includes it in the Runtime Authoring (RTA) plugins.
19
+ *
20
+ * @param rta Runtime Authoring instance
21
+ */
22
+ export function initExtendControllerPlugin(rta: RuntimeAuthoring): void {
23
+ const flexSettings = rta.getFlexSettings();
24
+ const commandFactory = new CommandFactory({ flexSettings });
25
+
26
+ const plugin = new ExtendController({
27
+ commandFactory,
28
+ handlerFunction: async (overlay: UI5Element) => await handlerFunction(rta, overlay)
29
+ });
30
+
31
+ const plugins = rta.getPlugins();
32
+ plugins.extendControllerPlugin = plugin;
33
+ rta.setPlugins(plugins);
34
+ }
35
+
36
+ /**
37
+ * Handles the creation of a controller extension by opening a dialog and resolving the deferred data.
38
+ *
39
+ * @param rta Runtime Authoring instance
40
+ * @param overlay UI5 Element overlay
41
+ * @returns A promise that resolves with DeferredXmlFragmentData
42
+ */
43
+ async function handlerFunction(rta: RuntimeAuthoring, overlay: UI5Element): Promise<DeferredExtendControllerData> {
44
+ const deferred = createDeferred<DeferredExtendControllerData>();
45
+
46
+ await DialogFactory.createDialog(overlay, rta, DialogNames.CONTROLLER_EXTENSION, { deferred });
47
+
48
+ return deferred.promise;
49
+ }