@sap-ux/preview-middleware 0.16.155 → 0.16.157

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 (107) hide show
  1. package/dist/client/adp/api-handler.js +142 -142
  2. package/dist/client/adp/command-executor.js +75 -75
  3. package/dist/client/adp/control-utils.js +44 -44
  4. package/dist/client/adp/controllers/AddFragment.controller.js +5 -6
  5. package/dist/client/adp/controllers/AddFragment.controller.ts +1 -2
  6. package/dist/client/adp/controllers/AddTableColumnFragments.controller.js +0 -1
  7. package/dist/client/adp/controllers/AddTableColumnFragments.controller.ts +0 -1
  8. package/dist/client/adp/controllers/BaseDialog.controller.js +187 -187
  9. package/dist/client/adp/controllers/BaseDialog.controller.ts +0 -4
  10. package/dist/client/adp/controllers/ControllerExtension.controller.js +213 -213
  11. package/dist/client/adp/controllers/ExtensionPoint.controller.js +138 -138
  12. package/dist/client/adp/dialog-factory.js +115 -0
  13. package/dist/client/adp/dialog-factory.ts +134 -0
  14. package/dist/client/adp/extension-point.js +6 -6
  15. package/dist/client/adp/extension-point.ts +2 -2
  16. package/dist/client/adp/init-dialogs.js +100 -157
  17. package/dist/client/adp/init-dialogs.ts +5 -77
  18. package/dist/client/adp/quick-actions/common/add-controller-to-page.js +55 -54
  19. package/dist/client/adp/quick-actions/common/add-controller-to-page.ts +5 -3
  20. package/dist/client/adp/quick-actions/common/create-page-action.js +50 -49
  21. package/dist/client/adp/quick-actions/common/create-page-action.ts +7 -4
  22. package/dist/client/adp/quick-actions/common/op-add-custom-section.js +36 -35
  23. package/dist/client/adp/quick-actions/common/op-add-custom-section.ts +6 -3
  24. package/dist/client/adp/quick-actions/common/op-add-header-field.js +48 -47
  25. package/dist/client/adp/quick-actions/common/op-add-header-field.ts +7 -4
  26. package/dist/client/adp/quick-actions/common/utils.js +20 -0
  27. package/dist/client/adp/quick-actions/common/utils.ts +7 -0
  28. package/dist/client/adp/quick-actions/control-types.js +23 -0
  29. package/dist/client/adp/quick-actions/control-types.ts +6 -0
  30. package/dist/client/adp/quick-actions/dialog-enablement-validator.js +26 -0
  31. package/dist/client/adp/quick-actions/dialog-enablement-validator.ts +18 -0
  32. package/dist/client/adp/quick-actions/enablement-validator.js +6 -0
  33. package/dist/client/adp/quick-actions/enablement-validator.ts +18 -0
  34. package/dist/client/adp/quick-actions/fe-v2/change-table-columns.js +101 -100
  35. package/dist/client/adp/quick-actions/fe-v2/change-table-columns.ts +11 -3
  36. package/dist/client/adp/quick-actions/fe-v2/create-table-action.js +70 -69
  37. package/dist/client/adp/quick-actions/fe-v2/create-table-action.ts +6 -3
  38. package/dist/client/adp/quick-actions/fe-v2/create-table-custom-column.js +96 -95
  39. package/dist/client/adp/quick-actions/fe-v2/create-table-custom-column.ts +27 -21
  40. package/dist/client/adp/quick-actions/fe-v2/lr-enable-semantic-date-range-filter-bar.js +60 -56
  41. package/dist/client/adp/quick-actions/fe-v2/lr-enable-semantic-date-range-filter-bar.ts +8 -3
  42. package/dist/client/adp/quick-actions/fe-v2/lr-enable-table-filtering.js +77 -67
  43. package/dist/client/adp/quick-actions/fe-v2/lr-enable-table-filtering.ts +37 -16
  44. package/dist/client/adp/quick-actions/fe-v2/lr-toggle-clear-filter-bar.js +57 -57
  45. package/dist/client/adp/quick-actions/fe-v2/op-enable-empty-row-mode.js +95 -0
  46. package/dist/client/adp/quick-actions/fe-v2/op-enable-empty-row-mode.ts +99 -0
  47. package/dist/client/adp/quick-actions/fe-v2/registry.js +72 -71
  48. package/dist/client/adp/quick-actions/fe-v2/registry.ts +3 -1
  49. package/dist/client/adp/quick-actions/fe-v2/utils.js +95 -86
  50. package/dist/client/adp/quick-actions/fe-v2/utils.ts +14 -4
  51. package/dist/client/adp/quick-actions/fe-v4/change-table-columns.js +49 -47
  52. package/dist/client/adp/quick-actions/fe-v4/change-table-columns.ts +5 -1
  53. package/dist/client/adp/quick-actions/fe-v4/create-table-action.js +47 -45
  54. package/dist/client/adp/quick-actions/fe-v4/create-table-action.ts +17 -7
  55. package/dist/client/adp/quick-actions/fe-v4/create-table-custom-column.js +46 -45
  56. package/dist/client/adp/quick-actions/fe-v4/create-table-custom-column.ts +11 -12
  57. package/dist/client/adp/quick-actions/fe-v4/lr-enable-semantic-date-range-filter-bar.js +55 -55
  58. package/dist/client/adp/quick-actions/fe-v4/lr-enable-table-filtering.js +82 -82
  59. package/dist/client/adp/quick-actions/fe-v4/lr-enable-table-filtering.ts +4 -4
  60. package/dist/client/adp/quick-actions/fe-v4/lr-toggle-clear-filter-bar.js +52 -52
  61. package/dist/client/adp/quick-actions/fe-v4/op-enable-empty-row-mode.js +91 -0
  62. package/dist/client/adp/quick-actions/fe-v4/op-enable-empty-row-mode.ts +85 -0
  63. package/dist/client/adp/quick-actions/fe-v4/registry.js +56 -55
  64. package/dist/client/adp/quick-actions/fe-v4/registry.ts +3 -1
  65. package/dist/client/adp/quick-actions/fe-v4/table-quick-action-base.js +11 -17
  66. package/dist/client/adp/quick-actions/fe-v4/table-quick-action-base.ts +17 -18
  67. package/dist/client/adp/quick-actions/fe-v4/utils.js +47 -47
  68. package/dist/client/adp/quick-actions/load.js +44 -44
  69. package/dist/client/adp/quick-actions/quick-action-base.js +55 -0
  70. package/dist/client/adp/quick-actions/quick-action-base.ts +55 -0
  71. package/dist/client/adp/quick-actions/simple-quick-action-base.js +8 -13
  72. package/dist/client/adp/quick-actions/simple-quick-action-base.ts +10 -18
  73. package/dist/client/adp/quick-actions/table-quick-action-base.js +24 -29
  74. package/dist/client/adp/quick-actions/table-quick-action-base.ts +39 -28
  75. package/dist/client/adp/utils.js +160 -160
  76. package/dist/client/cpe/changes/index.js +10 -10
  77. package/dist/client/cpe/changes/service.js +30 -0
  78. package/dist/client/cpe/changes/service.ts +46 -0
  79. package/dist/client/cpe/changes/validator.js +34 -34
  80. package/dist/client/cpe/documentation.js +164 -164
  81. package/dist/client/cpe/feature-service.js +36 -36
  82. package/dist/client/cpe/logger.js +30 -30
  83. package/dist/client/cpe/outline/editable.js +37 -37
  84. package/dist/client/cpe/outline/nodes.js +217 -217
  85. package/dist/client/cpe/quick-actions/quick-action-definition.js +4 -4
  86. package/dist/client/cpe/quick-actions/quick-action-definition.ts +5 -1
  87. package/dist/client/cpe/quick-actions/quick-action-service.js +10 -4
  88. package/dist/client/cpe/quick-actions/quick-action-service.ts +9 -3
  89. package/dist/client/cpe/quick-actions/registry.js +143 -143
  90. package/dist/client/cpe/quick-actions/utils.js +92 -92
  91. package/dist/client/cpe/types.js +4 -4
  92. package/dist/client/cpe/ui5-utils.js +33 -33
  93. package/dist/client/cpe/utils.js +138 -138
  94. package/dist/client/flp/WorkspaceConnector.js +86 -86
  95. package/dist/client/flp/common.js +28 -28
  96. package/dist/client/flp/enableFakeConnector.js +83 -83
  97. package/dist/client/flp/initConnectors.js +30 -30
  98. package/dist/client/flp/initRta.js +178 -178
  99. package/dist/client/i18n.js +56 -56
  100. package/dist/client/messagebundle.properties +5 -3
  101. package/dist/client/utils/application.js +32 -32
  102. package/dist/client/utils/core.js +68 -68
  103. package/dist/client/utils/error.js +19 -19
  104. package/dist/client/utils/fe-v4.js +118 -114
  105. package/dist/client/utils/fe-v4.ts +19 -11
  106. package/dist/client/utils/version.js +102 -102
  107. package/package.json +4 -4
@@ -1,140 +1,140 @@
1
- "use strict";
2
-
3
- sap.ui.define(["sap/ui/model/json/JSONModel", "../api-handler", "./BaseDialog.controller", "../utils"], function (JSONModel, ___api_handler, __BaseDialog, ___utils) {
4
- "use strict";
5
-
6
- function _interopRequireDefault(obj) {
7
- return obj && obj.__esModule && typeof obj.default !== "undefined" ? obj.default : obj;
8
- }
9
- const getFragments = ___api_handler["getFragments"];
10
- const BaseDialog = _interopRequireDefault(__BaseDialog);
11
- const notifyUser = ___utils["notifyUser"];
12
- /**
13
- * @namespace open.ux.preview.client.adp.controllers
14
- */
15
- const ExtensionPoint = BaseDialog.extend("open.ux.preview.client.adp.controllers.ExtensionPoint", {
16
- constructor: function _constructor(name, _overlays, rta, data) {
17
- BaseDialog.prototype.constructor.call(this, name);
18
- this.model = new JSONModel();
19
- this.data = data;
20
- this.rta = rta;
21
- },
22
- /**
23
- * Setups the Dialog and the JSON Model
24
- *
25
- * @param {Dialog} dialog - Dialog instance
26
- */
27
- setup: async function _setup(dialog) {
28
- this.dialog = dialog;
29
- this.setEscapeHandler();
30
- await this.buildDialogData();
31
- this.dialog.setModel(this.model);
32
- this.dialog.open();
33
- },
34
- /**
35
- * Handles create button press
36
- *
37
- * @param event Event
38
- */
39
- onCreateBtnPress: function _onCreateBtnPress(event) {
40
- const source = event.getSource();
41
- source.setEnabled(false);
42
- const fragmentName = this.model.getProperty('/newFragmentName');
43
- this.createExtensionPointFragmentChange(fragmentName);
44
- notifyUser(`Note: The '${fragmentName}.fragment.xml' fragment will be created once you save the change.`, 8000);
45
- this.handleDialogClose();
46
- },
47
- /**
48
- * Handler for extension point select control
49
- *
50
- * @param event Select control change event
51
- */
52
- onExtensionPointHandler: function _onExtensionPointHandler(event) {
53
- const source = event.getSource();
54
- const selectedItem = source.getSelectedItem();
55
- let extensionPointName = '';
56
- if (selectedItem) {
57
- extensionPointName = selectedItem.getText();
58
- }
59
- this.model.setProperty('/extensionPointName', extensionPointName);
60
- const hasDefaultContent = this.hasDefaultContentForName(extensionPointName);
61
- this.model.setProperty('/hasDefaultContent', hasDefaultContent);
62
- },
63
- /**
64
- * Determines whether there is default content associated with the given name.
65
- *
66
- * @param {string} name - The name to check for associated default content.
67
- * @returns {boolean} - True if there is non-empty default content associated with the name, false otherwise.
68
- */
69
- hasDefaultContentForName: function _hasDefaultContentForName(name) {
70
- const defaultContent = this.data?.info.find(v => v.name === name)?.defaultContent;
71
- return defaultContent ? defaultContent.length > 0 : false;
72
- },
73
- /**
74
- * Builds data that is used in the dialog
75
- */
76
- buildDialogData: async function _buildDialogData() {
77
- const name = this.data?.name;
78
- if (name) {
79
- const hasDefaultContent = this.hasDefaultContentForName(name);
80
- const extensionPointList = [{
81
- key: 0,
82
- value: name
83
- }];
84
- this.updateModel(name, 0, extensionPointList, false, hasDefaultContent);
85
- } else {
86
- // In this case we are selecting from the application. There can be many extension points under one control.
87
- const extensionPointList = this.data.info.map((v, idx) => {
88
- return {
89
- key: idx,
90
- value: v.name
91
- };
92
- });
93
- const firstElName = extensionPointList[0].value;
94
- const enabled = extensionPointList.length > 1;
95
- const hasDefaultContent = this.hasDefaultContentForName(firstElName);
96
- this.updateModel(firstElName, 0, extensionPointList, enabled, hasDefaultContent);
97
- }
98
- try {
99
- const {
100
- fragments
101
- } = await getFragments();
102
- this.model.setProperty('/fragmentList', fragments);
103
- } catch (e) {
104
- this.handleError(e);
105
- }
106
- },
107
- /**
108
- * Updates the Select control according to provided values
109
- *
110
- * @param name Extension point name
111
- * @param key Selected extension point key
112
- * @param list All of the extension points that are under a view
113
- * @param enabled Enables the select control
114
- * @param hasDefaultContent Whether there is default content associated with the extension name
115
- */
116
- updateModel: function _updateModel(name, key, list, enabled, hasDefaultContent) {
117
- this.model.setProperty('/extensionPointName', name);
118
- this.model.setProperty('/extensionPointKey', key);
119
- this.model.setProperty('/extensionPointList', list);
120
- this.model.setProperty('/extensionListEnabled', enabled);
121
- this.model.setProperty('/hasDefaultContent', hasDefaultContent);
122
- },
123
- /**
124
- * Creates add xml at extension point changes
125
- *
126
- * @param fragmentName Fragment name
127
- */
128
- createExtensionPointFragmentChange: function _createExtensionPointFragmentChange(fragmentName) {
129
- const extensionPointName = this.model.getProperty('/extensionPointName');
130
- const modifiedValue = {
131
- fragment: `<core:FragmentDefinition xmlns:core='sap.ui.core'></core:FragmentDefinition>`,
132
- fragmentPath: `fragments/${fragmentName}.fragment.xml`,
133
- extensionPointName
134
- };
135
- this.data.deferred.resolve(modifiedValue);
136
- }
137
- });
138
- return ExtensionPoint;
1
+ "use strict";
2
+
3
+ sap.ui.define(["sap/ui/model/json/JSONModel", "../api-handler", "./BaseDialog.controller", "../utils"], function (JSONModel, ___api_handler, __BaseDialog, ___utils) {
4
+ "use strict";
5
+
6
+ function _interopRequireDefault(obj) {
7
+ return obj && obj.__esModule && typeof obj.default !== "undefined" ? obj.default : obj;
8
+ }
9
+ const getFragments = ___api_handler["getFragments"];
10
+ const BaseDialog = _interopRequireDefault(__BaseDialog);
11
+ const notifyUser = ___utils["notifyUser"];
12
+ /**
13
+ * @namespace open.ux.preview.client.adp.controllers
14
+ */
15
+ const ExtensionPoint = BaseDialog.extend("open.ux.preview.client.adp.controllers.ExtensionPoint", {
16
+ constructor: function _constructor(name, _overlays, rta, data) {
17
+ BaseDialog.prototype.constructor.call(this, name);
18
+ this.model = new JSONModel();
19
+ this.data = data;
20
+ this.rta = rta;
21
+ },
22
+ /**
23
+ * Setups the Dialog and the JSON Model
24
+ *
25
+ * @param {Dialog} dialog - Dialog instance
26
+ */
27
+ setup: async function _setup(dialog) {
28
+ this.dialog = dialog;
29
+ this.setEscapeHandler();
30
+ await this.buildDialogData();
31
+ this.dialog.setModel(this.model);
32
+ this.dialog.open();
33
+ },
34
+ /**
35
+ * Handles create button press
36
+ *
37
+ * @param event Event
38
+ */
39
+ onCreateBtnPress: function _onCreateBtnPress(event) {
40
+ const source = event.getSource();
41
+ source.setEnabled(false);
42
+ const fragmentName = this.model.getProperty('/newFragmentName');
43
+ this.createExtensionPointFragmentChange(fragmentName);
44
+ notifyUser(`Note: The '${fragmentName}.fragment.xml' fragment will be created once you save the change.`, 8000);
45
+ this.handleDialogClose();
46
+ },
47
+ /**
48
+ * Handler for extension point select control
49
+ *
50
+ * @param event Select control change event
51
+ */
52
+ onExtensionPointHandler: function _onExtensionPointHandler(event) {
53
+ const source = event.getSource();
54
+ const selectedItem = source.getSelectedItem();
55
+ let extensionPointName = '';
56
+ if (selectedItem) {
57
+ extensionPointName = selectedItem.getText();
58
+ }
59
+ this.model.setProperty('/extensionPointName', extensionPointName);
60
+ const hasDefaultContent = this.hasDefaultContentForName(extensionPointName);
61
+ this.model.setProperty('/hasDefaultContent', hasDefaultContent);
62
+ },
63
+ /**
64
+ * Determines whether there is default content associated with the given name.
65
+ *
66
+ * @param {string} name - The name to check for associated default content.
67
+ * @returns {boolean} - True if there is non-empty default content associated with the name, false otherwise.
68
+ */
69
+ hasDefaultContentForName: function _hasDefaultContentForName(name) {
70
+ const defaultContent = this.data?.info.find(v => v.name === name)?.defaultContent;
71
+ return defaultContent ? defaultContent.length > 0 : false;
72
+ },
73
+ /**
74
+ * Builds data that is used in the dialog
75
+ */
76
+ buildDialogData: async function _buildDialogData() {
77
+ const name = this.data?.name;
78
+ if (name) {
79
+ const hasDefaultContent = this.hasDefaultContentForName(name);
80
+ const extensionPointList = [{
81
+ key: 0,
82
+ value: name
83
+ }];
84
+ this.updateModel(name, 0, extensionPointList, false, hasDefaultContent);
85
+ } else {
86
+ // In this case we are selecting from the application. There can be many extension points under one control.
87
+ const extensionPointList = this.data.info.map((v, idx) => {
88
+ return {
89
+ key: idx,
90
+ value: v.name
91
+ };
92
+ });
93
+ const firstElName = extensionPointList[0].value;
94
+ const enabled = extensionPointList.length > 1;
95
+ const hasDefaultContent = this.hasDefaultContentForName(firstElName);
96
+ this.updateModel(firstElName, 0, extensionPointList, enabled, hasDefaultContent);
97
+ }
98
+ try {
99
+ const {
100
+ fragments
101
+ } = await getFragments();
102
+ this.model.setProperty('/fragmentList', fragments);
103
+ } catch (e) {
104
+ this.handleError(e);
105
+ }
106
+ },
107
+ /**
108
+ * Updates the Select control according to provided values
109
+ *
110
+ * @param name Extension point name
111
+ * @param key Selected extension point key
112
+ * @param list All of the extension points that are under a view
113
+ * @param enabled Enables the select control
114
+ * @param hasDefaultContent Whether there is default content associated with the extension name
115
+ */
116
+ updateModel: function _updateModel(name, key, list, enabled, hasDefaultContent) {
117
+ this.model.setProperty('/extensionPointName', name);
118
+ this.model.setProperty('/extensionPointKey', key);
119
+ this.model.setProperty('/extensionPointList', list);
120
+ this.model.setProperty('/extensionListEnabled', enabled);
121
+ this.model.setProperty('/hasDefaultContent', hasDefaultContent);
122
+ },
123
+ /**
124
+ * Creates add xml at extension point changes
125
+ *
126
+ * @param fragmentName Fragment name
127
+ */
128
+ createExtensionPointFragmentChange: function _createExtensionPointFragmentChange(fragmentName) {
129
+ const extensionPointName = this.model.getProperty('/extensionPointName');
130
+ const modifiedValue = {
131
+ fragment: `<core:FragmentDefinition xmlns:core='sap.ui.core'></core:FragmentDefinition>`,
132
+ fragmentPath: `fragments/${fragmentName}.fragment.xml`,
133
+ extensionPointName
134
+ };
135
+ this.data.deferred.resolve(modifiedValue);
136
+ }
137
+ });
138
+ return ExtensionPoint;
139
139
  });
140
140
  //# sourceMappingURL=ExtensionPoint.controller.js.map
@@ -0,0 +1,115 @@
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"], function (Fragment, ___i18n, __AddFragment, __AddTableColumnFragments, __ControllerExtension, __ExtensionPoint) {
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
+ var DialogNames = /*#__PURE__*/function (DialogNames) {
15
+ DialogNames["ADD_FRAGMENT"] = "AddFragment";
16
+ DialogNames["ADD_TABLE_COLUMN_FRAGMENTS"] = "AddTableColumnFragments";
17
+ DialogNames["CONTROLLER_EXTENSION"] = "ControllerExtension";
18
+ DialogNames["ADD_FRAGMENT_AT_EXTENSION_POINT"] = "ExtensionPoint";
19
+ return DialogNames;
20
+ }(DialogNames || {});
21
+ const OPEN_DIALOG_STATUS_CHANGED = 'OPEN_DIALOG_STATUS_CHANGED';
22
+ class DialogFactory {
23
+ static eventTarget = new EventTarget();
24
+ static isDialogOpen = false;
25
+ /**
26
+ * Only one dialog can be open at a time. This flag indicates if a new dialog can be opened.
27
+ */
28
+
29
+ static get canOpenDialog() {
30
+ return !this.isDialogOpen;
31
+ }
32
+
33
+ /**
34
+ * Factory method for creating a new dialog.
35
+ *
36
+ * @param overlay - Control overlay.
37
+ * @param rta - Runtime Authoring instance.
38
+ * @param dialogName - Dialog name.
39
+ * @param extensionPointData - Control ID.
40
+ * @param options - Dialog options.
41
+ */
42
+ static async createDialog(overlay, rta, dialogName, extensionPointData) {
43
+ let options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
44
+ if (this.isDialogOpen) {
45
+ return;
46
+ }
47
+ let controller;
48
+ const resources = await getTextBundle();
49
+ switch (dialogName) {
50
+ case DialogNames.ADD_FRAGMENT:
51
+ controller = new AddFragment(`open.ux.preview.client.adp.controllers.${dialogName}`, overlay, rta, {
52
+ aggregation: options.aggregation,
53
+ title: resources.getText(options.title ?? 'ADP_ADD_FRAGMENT_DIALOG_TITLE')
54
+ });
55
+ break;
56
+ case DialogNames.ADD_TABLE_COLUMN_FRAGMENTS:
57
+ controller = new AddTableColumnFragments(`open.ux.preview.client.adp.controllers.${dialogName}`, overlay, rta, {
58
+ aggregation: options.aggregation,
59
+ title: resources.getText(options.title ?? 'ADP_ADD_FRAGMENT_DIALOG_TITLE')
60
+ });
61
+ break;
62
+ case DialogNames.CONTROLLER_EXTENSION:
63
+ controller = new ControllerExtension(`open.ux.preview.client.adp.controllers.${dialogName}`, overlay, rta);
64
+ break;
65
+ case DialogNames.ADD_FRAGMENT_AT_EXTENSION_POINT:
66
+ controller = new ExtensionPoint(`open.ux.preview.client.adp.controllers.${dialogName}`, overlay, rta, extensionPointData);
67
+ break;
68
+ }
69
+ const id = dialogName === DialogNames.ADD_FRAGMENT_AT_EXTENSION_POINT ? `dialog--${dialogName}` : undefined;
70
+ const dialog = await Fragment.load({
71
+ name: `open.ux.preview.client.adp.ui.${dialogName}`,
72
+ controller,
73
+ id
74
+ });
75
+ this.isDialogOpen = true;
76
+ dialog.attachBeforeClose(() => {
77
+ this.updateStatus(false);
78
+ });
79
+ await controller.setup(dialog);
80
+ this.updateStatus(true);
81
+ }
82
+
83
+ /**
84
+ * Updates open dialog status.
85
+ *
86
+ * @param isDialogOpen Flag indicating if there is an open dialog.
87
+ */
88
+ static updateStatus(isDialogOpen) {
89
+ this.isDialogOpen = isDialogOpen;
90
+ const event = new CustomEvent(OPEN_DIALOG_STATUS_CHANGED);
91
+ this.eventTarget.dispatchEvent(event);
92
+ }
93
+
94
+ /**
95
+ * Attach event handler for OPEN_DIALOG_STATUS_CHANGED event.
96
+ *
97
+ * @param handler Event handler.
98
+ * @returns Function that removes listener.
99
+ */
100
+ static onOpenDialogStatusChange(handler) {
101
+ this.eventTarget.addEventListener(OPEN_DIALOG_STATUS_CHANGED, handler);
102
+ return () => {
103
+ this.eventTarget.removeEventListener(OPEN_DIALOG_STATUS_CHANGED, handler);
104
+ };
105
+ }
106
+ }
107
+ var __exports = {
108
+ __esModule: true
109
+ };
110
+ __exports.DialogNames = DialogNames;
111
+ __exports.OPEN_DIALOG_STATUS_CHANGED = OPEN_DIALOG_STATUS_CHANGED;
112
+ __exports.DialogFactory = DialogFactory;
113
+ return __exports;
114
+ });
115
+ //# sourceMappingURL=dialog-factory.js.map
@@ -0,0 +1,134 @@
1
+ import Dialog from 'sap/m/Dialog';
2
+ import UI5Element from 'sap/ui/core/Element';
3
+ import Fragment from 'sap/ui/core/Fragment';
4
+ import RuntimeAuthoring from 'sap/ui/rta/RuntimeAuthoring';
5
+
6
+ import { getTextBundle } from '../i18n';
7
+
8
+ import AddFragment, { AddFragmentOptions } from './controllers/AddFragment.controller';
9
+ import AddTableColumnFragments from './controllers/AddTableColumnFragments.controller';
10
+ import ControllerExtension from './controllers/ControllerExtension.controller';
11
+ import ExtensionPoint from './controllers/ExtensionPoint.controller';
12
+
13
+ import { ExtensionPointData } from './extension-point';
14
+
15
+ export const enum DialogNames {
16
+ ADD_FRAGMENT = 'AddFragment',
17
+ ADD_TABLE_COLUMN_FRAGMENTS = 'AddTableColumnFragments',
18
+ CONTROLLER_EXTENSION = 'ControllerExtension',
19
+ ADD_FRAGMENT_AT_EXTENSION_POINT = 'ExtensionPoint'
20
+ }
21
+
22
+ type Controller = AddFragment | AddTableColumnFragments | ControllerExtension | ExtensionPoint;
23
+
24
+ export const OPEN_DIALOG_STATUS_CHANGED = 'OPEN_DIALOG_STATUS_CHANGED';
25
+
26
+ export class DialogFactory {
27
+ private static readonly eventTarget = new EventTarget();
28
+ private 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
+ public static get canOpenDialog(): boolean {
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 extensionPointData - Control ID.
44
+ * @param options - Dialog options.
45
+ */
46
+ public static async createDialog(
47
+ overlay: UI5Element,
48
+ rta: RuntimeAuthoring,
49
+ dialogName: DialogNames,
50
+ extensionPointData?: ExtensionPointData,
51
+ options: Partial<AddFragmentOptions> = {}
52
+ ): Promise<void> {
53
+ if (this.isDialogOpen) {
54
+ return;
55
+ }
56
+ let controller: Controller;
57
+ const resources = await getTextBundle();
58
+
59
+ switch (dialogName) {
60
+ case DialogNames.ADD_FRAGMENT:
61
+ controller = new AddFragment(`open.ux.preview.client.adp.controllers.${dialogName}`, overlay, rta, {
62
+ aggregation: options.aggregation,
63
+ title: resources.getText(options.title ?? 'ADP_ADD_FRAGMENT_DIALOG_TITLE')
64
+ });
65
+ break;
66
+ case DialogNames.ADD_TABLE_COLUMN_FRAGMENTS:
67
+ controller = new AddTableColumnFragments(
68
+ `open.ux.preview.client.adp.controllers.${dialogName}`,
69
+ overlay,
70
+ rta,
71
+ {
72
+ aggregation: options.aggregation,
73
+ title: resources.getText(options.title ?? 'ADP_ADD_FRAGMENT_DIALOG_TITLE')
74
+ }
75
+ );
76
+ break;
77
+ case DialogNames.CONTROLLER_EXTENSION:
78
+ controller = new ControllerExtension(
79
+ `open.ux.preview.client.adp.controllers.${dialogName}`,
80
+ overlay,
81
+ rta
82
+ );
83
+ break;
84
+ case DialogNames.ADD_FRAGMENT_AT_EXTENSION_POINT:
85
+ controller = new ExtensionPoint(
86
+ `open.ux.preview.client.adp.controllers.${dialogName}`,
87
+ overlay,
88
+ rta,
89
+ extensionPointData!
90
+ );
91
+ break;
92
+ }
93
+
94
+ const id = dialogName === DialogNames.ADD_FRAGMENT_AT_EXTENSION_POINT ? `dialog--${dialogName}` : undefined;
95
+
96
+ const dialog = (await Fragment.load({
97
+ name: `open.ux.preview.client.adp.ui.${dialogName}`,
98
+ controller,
99
+ id
100
+ })) as Dialog;
101
+
102
+ this.isDialogOpen = true;
103
+ dialog.attachBeforeClose(() => {
104
+ this.updateStatus(false);
105
+ });
106
+
107
+ await controller.setup(dialog);
108
+ this.updateStatus(true);
109
+ }
110
+
111
+ /**
112
+ * Updates open dialog status.
113
+ *
114
+ * @param isDialogOpen Flag indicating if there is an open dialog.
115
+ */
116
+ private static updateStatus(isDialogOpen: boolean) {
117
+ this.isDialogOpen = isDialogOpen;
118
+ const event = new CustomEvent(OPEN_DIALOG_STATUS_CHANGED);
119
+ this.eventTarget.dispatchEvent(event);
120
+ }
121
+
122
+ /**
123
+ * Attach event handler for OPEN_DIALOG_STATUS_CHANGED event.
124
+ *
125
+ * @param handler Event handler.
126
+ * @returns Function that removes listener.
127
+ */
128
+ public static onOpenDialogStatusChange(handler: (event: CustomEvent) => void | Promise<void>): () => void {
129
+ this.eventTarget.addEventListener(OPEN_DIALOG_STATUS_CHANGED, handler as EventListener);
130
+ return () => {
131
+ this.eventTarget.removeEventListener(OPEN_DIALOG_STATUS_CHANGED, handler as EventListener);
132
+ };
133
+ }
134
+ }
@@ -4,15 +4,15 @@ sap.ui.define([
4
4
  'sap/ui/rta/command/CommandFactory',
5
5
  'open/ux/preview/client/thirdparty/@sap-ux-private/control-property-editor-common',
6
6
  './utils',
7
- '../cpe/communication-service',
8
- './init-dialogs'
9
- ], function (AddXMLAtExtensionPoint, CommandFactory, ___sap_ux_private_control_property_editor_common, ___utils, ___cpe_communication_service, ___init_dialogs) {
7
+ './dialog-factory',
8
+ '../cpe/communication-service'
9
+ ], function (AddXMLAtExtensionPoint, CommandFactory, ___sap_ux_private_control_property_editor_common, ___utils, ___dialog_factory, ___cpe_communication_service) {
10
10
  'use strict';
11
11
  const addExtensionPoint = ___sap_ux_private_control_property_editor_common['addExtensionPoint'];
12
12
  const createDeferred = ___utils['createDeferred'];
13
+ const DialogFactory = ___dialog_factory['DialogFactory'];
14
+ const DialogNames = ___dialog_factory['DialogNames'];
13
15
  const CommunicationService = ___cpe_communication_service['CommunicationService'];
14
- const DialogNames = ___init_dialogs['DialogNames'];
15
- const handler = ___init_dialogs['handler'];
16
16
  class ExtensionPointService {
17
17
  actionId = 'CTX_ADDXML_AT_EXTENSIONPOINT';
18
18
  constructor(rta) {
@@ -47,7 +47,7 @@ sap.ui.define([
47
47
  async fragmentHandler(overlay, info) {
48
48
  let deferred = createDeferred();
49
49
  const name = this.selectedExtensionPointName;
50
- await handler(overlay, this.rta, DialogNames.ADD_FRAGMENT_AT_EXTENSION_POINT, {
50
+ await DialogFactory.createDialog(overlay, this.rta, DialogNames.ADD_FRAGMENT_AT_EXTENSION_POINT, {
51
51
  name,
52
52
  info,
53
53
  deferred
@@ -7,9 +7,9 @@ import CommandFactory from 'sap/ui/rta/command/CommandFactory';
7
7
  import { ExternalAction, addExtensionPoint } from '@sap-ux-private/control-property-editor-common';
8
8
 
9
9
  import { Deferred, createDeferred } from './utils';
10
+ import { DialogFactory, DialogNames } from './dialog-factory';
10
11
 
11
12
  import { CommunicationService } from '../cpe/communication-service';
12
- import { DialogNames, handler } from './init-dialogs';
13
13
 
14
14
  type ActionService = {
15
15
  execute: (controlId: string, actionId: string) => void;
@@ -100,7 +100,7 @@ export default class ExtensionPointService {
100
100
  let deferred = createDeferred<DeferredExtPointData>();
101
101
  const name = this.selectedExtensionPointName;
102
102
 
103
- await handler(overlay, this.rta, DialogNames.ADD_FRAGMENT_AT_EXTENSION_POINT, {
103
+ await DialogFactory.createDialog(overlay, this.rta, DialogNames.ADD_FRAGMENT_AT_EXTENSION_POINT, {
104
104
  name,
105
105
  info,
106
106
  deferred