@sap-ux/preview-middleware 0.18.20 → 0.18.23

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 (72) hide show
  1. package/dist/client/adp/api-handler.js +153 -153
  2. package/dist/client/adp/api-handler.ts +2 -2
  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 +133 -133
  10. package/dist/client/adp/init-dialogs.js +107 -107
  11. package/dist/client/adp/quick-actions/common/add-controller-to-page.js +55 -55
  12. package/dist/client/adp/quick-actions/common/add-new-annotation-file.js +24 -7
  13. package/dist/client/adp/quick-actions/common/add-new-annotation-file.ts +25 -7
  14. package/dist/client/adp/quick-actions/common/add-new-subpage.js +134 -138
  15. package/dist/client/adp/quick-actions/common/add-new-subpage.ts +0 -5
  16. package/dist/client/adp/quick-actions/common/create-page-action.js +51 -51
  17. package/dist/client/adp/quick-actions/common/op-add-custom-section.js +36 -36
  18. package/dist/client/adp/quick-actions/common/op-add-header-field.js +61 -61
  19. package/dist/client/adp/quick-actions/common/utils.js +18 -18
  20. package/dist/client/adp/quick-actions/control-types.js +21 -21
  21. package/dist/client/adp/quick-actions/dialog-enablement-validator.js +24 -24
  22. package/dist/client/adp/quick-actions/enablement-validator.js +4 -4
  23. package/dist/client/adp/quick-actions/fe-v2/change-table-columns.js +101 -101
  24. package/dist/client/adp/quick-actions/fe-v2/create-table-action.js +104 -104
  25. package/dist/client/adp/quick-actions/fe-v2/create-table-custom-column.js +96 -96
  26. package/dist/client/adp/quick-actions/fe-v2/lr-enable-semantic-date-range-filter-bar.js +78 -78
  27. package/dist/client/adp/quick-actions/fe-v2/lr-enable-table-filtering.js +77 -77
  28. package/dist/client/adp/quick-actions/fe-v2/lr-enable-variant-management.js +69 -69
  29. package/dist/client/adp/quick-actions/fe-v2/lr-toggle-clear-filter-bar.js +59 -59
  30. package/dist/client/adp/quick-actions/fe-v2/op-enable-empty-row-mode.js +93 -93
  31. package/dist/client/adp/quick-actions/fe-v2/op-enable-variant-management.js +84 -84
  32. package/dist/client/adp/quick-actions/fe-v2/registry.js +76 -76
  33. package/dist/client/adp/quick-actions/fe-v2/utils.js +116 -116
  34. package/dist/client/adp/quick-actions/fe-v4/change-table-columns.js +73 -73
  35. package/dist/client/adp/quick-actions/fe-v4/create-table-action.js +50 -50
  36. package/dist/client/adp/quick-actions/fe-v4/create-table-custom-column.js +46 -46
  37. package/dist/client/adp/quick-actions/fe-v4/enable-variant-management.js +81 -81
  38. package/dist/client/adp/quick-actions/fe-v4/lr-enable-semantic-date-range-filter-bar.js +56 -56
  39. package/dist/client/adp/quick-actions/fe-v4/lr-enable-table-filtering.js +82 -82
  40. package/dist/client/adp/quick-actions/fe-v4/lr-toggle-clear-filter-bar.js +53 -53
  41. package/dist/client/adp/quick-actions/fe-v4/op-enable-empty-row-mode.js +89 -89
  42. package/dist/client/adp/quick-actions/fe-v4/registry.js +58 -58
  43. package/dist/client/adp/quick-actions/fe-v4/utils.js +47 -47
  44. package/dist/client/adp/quick-actions/load.js +44 -44
  45. package/dist/client/adp/quick-actions/quick-action-base.js +53 -53
  46. package/dist/client/adp/utils.js +160 -160
  47. package/dist/client/cpe/changes/index.js +10 -10
  48. package/dist/client/cpe/changes/validator.js +39 -39
  49. package/dist/client/cpe/documentation.js +164 -164
  50. package/dist/client/cpe/feature-service.js +36 -36
  51. package/dist/client/cpe/logger.js +30 -30
  52. package/dist/client/cpe/outline/editable.js +37 -37
  53. package/dist/client/cpe/outline/nodes.js +222 -222
  54. package/dist/client/cpe/quick-actions/quick-action-definition.js +4 -4
  55. package/dist/client/cpe/quick-actions/registry.js +143 -143
  56. package/dist/client/cpe/quick-actions/utils.js +92 -92
  57. package/dist/client/cpe/types.js +4 -4
  58. package/dist/client/cpe/ui5-utils.js +33 -33
  59. package/dist/client/cpe/utils.js +138 -138
  60. package/dist/client/flp/WorkspaceConnector.js +86 -86
  61. package/dist/client/flp/common.js +28 -28
  62. package/dist/client/flp/enableFakeConnector.js +83 -83
  63. package/dist/client/flp/initConnectors.js +28 -28
  64. package/dist/client/flp/initRta.js +178 -178
  65. package/dist/client/i18n.js +56 -56
  66. package/dist/client/utils/application.js +32 -32
  67. package/dist/client/utils/core.js +68 -68
  68. package/dist/client/utils/error.js +19 -19
  69. package/dist/client/utils/fe-v2.js +56 -56
  70. package/dist/client/utils/fe-v4.js +141 -141
  71. package/dist/client/utils/version.js +104 -104
  72. package/package.json +6 -6
@@ -1,63 +1,63 @@
1
- "use strict";
2
-
3
- sap.ui.define(["sap/ui/dt/OverlayRegistry", "../../dialog-factory", "../../../utils/core", "../simple-quick-action-base", "../dialog-enablement-validator", "../../../i18n"], function (OverlayRegistry, ____dialog_factory, _____utils_core, ___simple_quick_action_base, ___dialog_enablement_validator, _____i18n) {
4
- "use strict";
5
-
6
- const DialogFactory = ____dialog_factory["DialogFactory"];
7
- const DialogNames = ____dialog_factory["DialogNames"];
8
- const isA = _____utils_core["isA"];
9
- const SimpleQuickActionDefinitionBase = ___simple_quick_action_base["SimpleQuickActionDefinitionBase"];
10
- const DIALOG_ENABLEMENT_VALIDATOR = ___dialog_enablement_validator["DIALOG_ENABLEMENT_VALIDATOR"];
11
- const getTextBundle = _____i18n["getTextBundle"];
12
- const OP_ADD_HEADER_FIELD_TYPE = 'op-add-header-field';
13
- const CONTROL_TYPES = ['sap.uxap.ObjectPageLayout'];
14
-
15
- /**
16
- * Quick Action for adding a Header Field to an Object Page.
17
- */
18
- class AddHeaderFieldQuickAction extends SimpleQuickActionDefinitionBase {
19
- constructor(context) {
20
- super(OP_ADD_HEADER_FIELD_TYPE, CONTROL_TYPES, 'QUICK_ACTION_OP_ADD_HEADER_FIELD', context, [DIALOG_ENABLEMENT_VALIDATOR, {
21
- run: async () => {
22
- const i18n = await getTextBundle();
23
- if (!this.control?.getShowHeaderContent()) {
24
- return {
25
- type: 'error',
26
- message: i18n.getText('DISABLE_SHOW_HEADER_CONTENT')
27
- };
28
- }
29
- return undefined;
30
- }
31
- }]);
32
- }
33
- async execute() {
34
- if (!this.control) {
35
- return [];
36
- }
37
- const headerContent = this.control.getHeaderContent();
38
-
39
- // check if only flex box exist in the headerContent.
40
- if (headerContent.length === 1 && isA('sap.m.FlexBox', headerContent[0])) {
41
- const overlay = OverlayRegistry.getOverlay(headerContent[0]) || [];
42
- await DialogFactory.createDialog(overlay, this.context.rta, DialogNames.ADD_FRAGMENT, undefined, {
43
- aggregation: 'items',
44
- title: 'QUICK_ACTION_OP_ADD_HEADER_FIELD'
45
- });
46
- } else if (this.control) {
47
- const overlay = OverlayRegistry.getOverlay(this.control) || [];
48
- await DialogFactory.createDialog(overlay, this.context.rta, DialogNames.ADD_FRAGMENT, undefined, {
49
- aggregation: 'headerContent',
50
- title: 'QUICK_ACTION_OP_ADD_HEADER_FIELD'
51
- });
52
- }
53
- return [];
54
- }
55
- }
56
- var __exports = {
57
- __esModule: true
58
- };
59
- __exports.OP_ADD_HEADER_FIELD_TYPE = OP_ADD_HEADER_FIELD_TYPE;
60
- __exports.AddHeaderFieldQuickAction = AddHeaderFieldQuickAction;
61
- return __exports;
1
+ "use strict";
2
+
3
+ sap.ui.define(["sap/ui/dt/OverlayRegistry", "../../dialog-factory", "../../../utils/core", "../simple-quick-action-base", "../dialog-enablement-validator", "../../../i18n"], function (OverlayRegistry, ____dialog_factory, _____utils_core, ___simple_quick_action_base, ___dialog_enablement_validator, _____i18n) {
4
+ "use strict";
5
+
6
+ const DialogFactory = ____dialog_factory["DialogFactory"];
7
+ const DialogNames = ____dialog_factory["DialogNames"];
8
+ const isA = _____utils_core["isA"];
9
+ const SimpleQuickActionDefinitionBase = ___simple_quick_action_base["SimpleQuickActionDefinitionBase"];
10
+ const DIALOG_ENABLEMENT_VALIDATOR = ___dialog_enablement_validator["DIALOG_ENABLEMENT_VALIDATOR"];
11
+ const getTextBundle = _____i18n["getTextBundle"];
12
+ const OP_ADD_HEADER_FIELD_TYPE = 'op-add-header-field';
13
+ const CONTROL_TYPES = ['sap.uxap.ObjectPageLayout'];
14
+
15
+ /**
16
+ * Quick Action for adding a Header Field to an Object Page.
17
+ */
18
+ class AddHeaderFieldQuickAction extends SimpleQuickActionDefinitionBase {
19
+ constructor(context) {
20
+ super(OP_ADD_HEADER_FIELD_TYPE, CONTROL_TYPES, 'QUICK_ACTION_OP_ADD_HEADER_FIELD', context, [DIALOG_ENABLEMENT_VALIDATOR, {
21
+ run: async () => {
22
+ const i18n = await getTextBundle();
23
+ if (!this.control?.getShowHeaderContent()) {
24
+ return {
25
+ type: 'error',
26
+ message: i18n.getText('DISABLE_SHOW_HEADER_CONTENT')
27
+ };
28
+ }
29
+ return undefined;
30
+ }
31
+ }]);
32
+ }
33
+ async execute() {
34
+ if (!this.control) {
35
+ return [];
36
+ }
37
+ const headerContent = this.control.getHeaderContent();
38
+
39
+ // check if only flex box exist in the headerContent.
40
+ if (headerContent.length === 1 && isA('sap.m.FlexBox', headerContent[0])) {
41
+ const overlay = OverlayRegistry.getOverlay(headerContent[0]) || [];
42
+ await DialogFactory.createDialog(overlay, this.context.rta, DialogNames.ADD_FRAGMENT, undefined, {
43
+ aggregation: 'items',
44
+ title: 'QUICK_ACTION_OP_ADD_HEADER_FIELD'
45
+ });
46
+ } else if (this.control) {
47
+ const overlay = OverlayRegistry.getOverlay(this.control) || [];
48
+ await DialogFactory.createDialog(overlay, this.context.rta, DialogNames.ADD_FRAGMENT, undefined, {
49
+ aggregation: 'headerContent',
50
+ title: 'QUICK_ACTION_OP_ADD_HEADER_FIELD'
51
+ });
52
+ }
53
+ return [];
54
+ }
55
+ }
56
+ var __exports = {
57
+ __esModule: true
58
+ };
59
+ __exports.OP_ADD_HEADER_FIELD_TYPE = OP_ADD_HEADER_FIELD_TYPE;
60
+ __exports.AddHeaderFieldQuickAction = AddHeaderFieldQuickAction;
61
+ return __exports;
62
62
  });
63
63
  //# sourceMappingURL=op-add-header-field.js.map
@@ -1,20 +1,20 @@
1
- "use strict";
2
-
3
- sap.ui.define([], function () {
4
- "use strict";
5
-
6
- function getTooltipsForTableEmptyRowModeAction(resourceBundle) {
7
- const alreadyEnabledTooltip = resourceBundle.getText('EMPTY_ROW_MODE_IS_ALREADY_ENABLED');
8
- const unsupportedCreationRowsTooltip = resourceBundle.getText('EMPTY_ROW_MODE_IS_NOT_SUPPORTED');
9
- return {
10
- alreadyEnabledTooltip,
11
- unsupportedCreationRowsTooltip
12
- };
13
- }
14
- var __exports = {
15
- __esModule: true
16
- };
17
- __exports.getTooltipsForTableEmptyRowModeAction = getTooltipsForTableEmptyRowModeAction;
18
- return __exports;
1
+ "use strict";
2
+
3
+ sap.ui.define([], function () {
4
+ "use strict";
5
+
6
+ function getTooltipsForTableEmptyRowModeAction(resourceBundle) {
7
+ const alreadyEnabledTooltip = resourceBundle.getText('EMPTY_ROW_MODE_IS_ALREADY_ENABLED');
8
+ const unsupportedCreationRowsTooltip = resourceBundle.getText('EMPTY_ROW_MODE_IS_NOT_SUPPORTED');
9
+ return {
10
+ alreadyEnabledTooltip,
11
+ unsupportedCreationRowsTooltip
12
+ };
13
+ }
14
+ var __exports = {
15
+ __esModule: true
16
+ };
17
+ __exports.getTooltipsForTableEmptyRowModeAction = getTooltipsForTableEmptyRowModeAction;
18
+ return __exports;
19
19
  });
20
20
  //# sourceMappingURL=utils.js.map
@@ -1,23 +1,23 @@
1
- "use strict";
2
-
3
- sap.ui.define([], function () {
4
- "use strict";
5
-
6
- const SMART_TABLE_TYPE = 'sap.ui.comp.smarttable.SmartTable';
7
- const M_TABLE_TYPE = 'sap.m.Table';
8
- const MDC_TABLE_TYPE = 'sap.ui.mdc.Table';
9
- const TREE_TABLE_TYPE = 'sap.ui.table.TreeTable';
10
- const GRID_TABLE_TYPE = 'sap.ui.table.Table';
11
- const ANALYTICAL_TABLE_TYPE = 'sap.ui.table.AnalyticalTable';
12
- var __exports = {
13
- __esModule: true
14
- };
15
- __exports.SMART_TABLE_TYPE = SMART_TABLE_TYPE;
16
- __exports.M_TABLE_TYPE = M_TABLE_TYPE;
17
- __exports.MDC_TABLE_TYPE = MDC_TABLE_TYPE;
18
- __exports.TREE_TABLE_TYPE = TREE_TABLE_TYPE;
19
- __exports.GRID_TABLE_TYPE = GRID_TABLE_TYPE;
20
- __exports.ANALYTICAL_TABLE_TYPE = ANALYTICAL_TABLE_TYPE;
21
- return __exports;
1
+ "use strict";
2
+
3
+ sap.ui.define([], function () {
4
+ "use strict";
5
+
6
+ const SMART_TABLE_TYPE = 'sap.ui.comp.smarttable.SmartTable';
7
+ const M_TABLE_TYPE = 'sap.m.Table';
8
+ const MDC_TABLE_TYPE = 'sap.ui.mdc.Table';
9
+ const TREE_TABLE_TYPE = 'sap.ui.table.TreeTable';
10
+ const GRID_TABLE_TYPE = 'sap.ui.table.Table';
11
+ const ANALYTICAL_TABLE_TYPE = 'sap.ui.table.AnalyticalTable';
12
+ var __exports = {
13
+ __esModule: true
14
+ };
15
+ __exports.SMART_TABLE_TYPE = SMART_TABLE_TYPE;
16
+ __exports.M_TABLE_TYPE = M_TABLE_TYPE;
17
+ __exports.MDC_TABLE_TYPE = MDC_TABLE_TYPE;
18
+ __exports.TREE_TABLE_TYPE = TREE_TABLE_TYPE;
19
+ __exports.GRID_TABLE_TYPE = GRID_TABLE_TYPE;
20
+ __exports.ANALYTICAL_TABLE_TYPE = ANALYTICAL_TABLE_TYPE;
21
+ return __exports;
22
22
  });
23
23
  //# sourceMappingURL=control-types.js.map
@@ -1,26 +1,26 @@
1
- "use strict";
2
-
3
- sap.ui.define(["../../i18n", "../dialog-factory"], function (____i18n, ___dialog_factory) {
4
- "use strict";
5
-
6
- const getTextBundle = ____i18n["getTextBundle"];
7
- const DialogFactory = ___dialog_factory["DialogFactory"];
8
- const DIALOG_ENABLEMENT_VALIDATOR = {
9
- run: async () => {
10
- const i18n = await getTextBundle();
11
- if (!DialogFactory.canOpenDialog) {
12
- return {
13
- type: 'error',
14
- message: i18n.getText('ADP_QUICK_ACTION_DIALOG_OPEN_MESSAGE')
15
- };
16
- }
17
- return undefined;
18
- }
19
- };
20
- var __exports = {
21
- __esModule: true
22
- };
23
- __exports.DIALOG_ENABLEMENT_VALIDATOR = DIALOG_ENABLEMENT_VALIDATOR;
24
- return __exports;
1
+ "use strict";
2
+
3
+ sap.ui.define(["../../i18n", "../dialog-factory"], function (____i18n, ___dialog_factory) {
4
+ "use strict";
5
+
6
+ const getTextBundle = ____i18n["getTextBundle"];
7
+ const DialogFactory = ___dialog_factory["DialogFactory"];
8
+ const DIALOG_ENABLEMENT_VALIDATOR = {
9
+ run: async () => {
10
+ const i18n = await getTextBundle();
11
+ if (!DialogFactory.canOpenDialog) {
12
+ return {
13
+ type: 'error',
14
+ message: i18n.getText('ADP_QUICK_ACTION_DIALOG_OPEN_MESSAGE')
15
+ };
16
+ }
17
+ return undefined;
18
+ }
19
+ };
20
+ var __exports = {
21
+ __esModule: true
22
+ };
23
+ __exports.DIALOG_ENABLEMENT_VALIDATOR = DIALOG_ENABLEMENT_VALIDATOR;
24
+ return __exports;
25
25
  });
26
26
  //# sourceMappingURL=dialog-enablement-validator.js.map
@@ -1,6 +1,6 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
5
  });
6
6
  //# sourceMappingURL=enablement-validator.js.map
@@ -1,103 +1,103 @@
1
- "use strict";
2
-
3
- sap.ui.define(["../../../utils/core", "../table-quick-action-base", "../dialog-enablement-validator"], function (_____utils_core, ___table_quick_action_base, ___dialog_enablement_validator) {
4
- "use strict";
5
-
6
- const getControlById = _____utils_core["getControlById"];
7
- const isA = _____utils_core["isA"];
8
- const TableQuickActionDefinitionBase = ___table_quick_action_base["TableQuickActionDefinitionBase"];
9
- const DIALOG_ENABLEMENT_VALIDATOR = ___dialog_enablement_validator["DIALOG_ENABLEMENT_VALIDATOR"];
10
- const CHANGE_TABLE_COLUMNS = 'change-table-columns';
11
- const SMART_TABLE_TYPE = 'sap.ui.comp.smarttable.SmartTable';
12
- const M_TABLE_TYPE = 'sap.m.Table';
13
- // maintain order if action id
14
- const CONTROL_TYPES = [SMART_TABLE_TYPE, M_TABLE_TYPE, 'sap.ui.table.TreeTable', 'sap.ui.table.Table'];
15
- class ChangeTableColumnsQuickAction extends TableQuickActionDefinitionBase {
16
- constructor(context) {
17
- super(CHANGE_TABLE_COLUMNS, CONTROL_TYPES, 'V2_QUICK_ACTION_CHANGE_TABLE_COLUMNS', context, {
18
- includeServiceAction: true
19
- }, [DIALOG_ENABLEMENT_VALIDATOR]);
20
- }
21
- async execute(path) {
22
- const {
23
- table,
24
- iconTabBarFilterKey,
25
- changeColumnActionId,
26
- sectionInfo
27
- } = this.tableMap[path];
28
- if (!table) {
29
- return [];
30
- }
31
- if (sectionInfo) {
32
- const {
33
- layout,
34
- section,
35
- subSection
36
- } = sectionInfo;
37
- layout?.setSelectedSection(section);
38
- section.setSelectedSubSection(subSection);
39
- this.selectOverlay(table);
40
- } else {
41
- getControlById(table.getId())?.getDomRef()?.scrollIntoView();
42
- this.selectOverlay(table);
43
- }
44
- if (this.iconTabBar && iconTabBarFilterKey) {
45
- this.iconTabBar.setSelectedKey(iconTabBarFilterKey);
46
- }
47
- if (changeColumnActionId) {
48
- const executeAction = async () => await this.context.actionService.execute(table.getId(), changeColumnActionId);
49
- if (isA(SMART_TABLE_TYPE, table)) {
50
- await executeAction();
51
- } else if (isA(M_TABLE_TYPE, table)) {
52
- // if table is busy, i.e. lazy loading, then we subscribe to 'updateFinished' event and call action service when loading is done
53
- // to avoid reopening the dialog after close
54
- if (this.isTableLoaded(table)) {
55
- await executeAction();
56
- } else {
57
- table.attachEventOnce('updateFinished', executeAction, this);
58
- }
59
- }
60
- }
61
- return [];
62
- }
63
- isAbsoluteAggregationBinding(element, aggregationName) {
64
- const mBindingInfo = element.getBindingInfo(aggregationName);
65
- const path = mBindingInfo?.path;
66
- if (!path) {
67
- return false;
68
- }
69
- return path.indexOf('/') === 0;
70
- }
71
-
72
- /**
73
- * Checks if table is loaded and has binding context available.
74
- * This is needed to properly render change columns dialog.
75
- * Based on {@link https://github.com/SAP/openui5/blob/rel-1.127/src/sap.ui.fl/src/sap/ui/fl/write/_internal/delegates/ODataV2ReadDelegate.js#L269-L271| ODataV2ReadDelegate.getPropertyInfo}.
76
- *
77
- * @param element - Table control.
78
- * @returns True if binding context is available.
79
- */
80
- isTableLoaded(element) {
81
- const aggregationName = 'items';
82
- if (this.isAbsoluteAggregationBinding(element, aggregationName)) {
83
- const bindingInfo = element.getBindingInfo(aggregationName);
84
- // check to be default model binding otherwise return undefined
85
- if (typeof bindingInfo.model === 'string' && bindingInfo.model !== '') {
86
- return false;
87
- }
88
- return bindingInfo.path !== undefined;
89
- } else {
90
- // here we explicitly request the default models binding context
91
- const bindingContext = element.getBindingContext();
92
- return !!bindingContext;
93
- }
94
- }
95
- }
96
- var __exports = {
97
- __esModule: true
98
- };
99
- __exports.CHANGE_TABLE_COLUMNS = CHANGE_TABLE_COLUMNS;
100
- __exports.ChangeTableColumnsQuickAction = ChangeTableColumnsQuickAction;
101
- return __exports;
1
+ "use strict";
2
+
3
+ sap.ui.define(["../../../utils/core", "../table-quick-action-base", "../dialog-enablement-validator"], function (_____utils_core, ___table_quick_action_base, ___dialog_enablement_validator) {
4
+ "use strict";
5
+
6
+ const getControlById = _____utils_core["getControlById"];
7
+ const isA = _____utils_core["isA"];
8
+ const TableQuickActionDefinitionBase = ___table_quick_action_base["TableQuickActionDefinitionBase"];
9
+ const DIALOG_ENABLEMENT_VALIDATOR = ___dialog_enablement_validator["DIALOG_ENABLEMENT_VALIDATOR"];
10
+ const CHANGE_TABLE_COLUMNS = 'change-table-columns';
11
+ const SMART_TABLE_TYPE = 'sap.ui.comp.smarttable.SmartTable';
12
+ const M_TABLE_TYPE = 'sap.m.Table';
13
+ // maintain order if action id
14
+ const CONTROL_TYPES = [SMART_TABLE_TYPE, M_TABLE_TYPE, 'sap.ui.table.TreeTable', 'sap.ui.table.Table'];
15
+ class ChangeTableColumnsQuickAction extends TableQuickActionDefinitionBase {
16
+ constructor(context) {
17
+ super(CHANGE_TABLE_COLUMNS, CONTROL_TYPES, 'V2_QUICK_ACTION_CHANGE_TABLE_COLUMNS', context, {
18
+ includeServiceAction: true
19
+ }, [DIALOG_ENABLEMENT_VALIDATOR]);
20
+ }
21
+ async execute(path) {
22
+ const {
23
+ table,
24
+ iconTabBarFilterKey,
25
+ changeColumnActionId,
26
+ sectionInfo
27
+ } = this.tableMap[path];
28
+ if (!table) {
29
+ return [];
30
+ }
31
+ if (sectionInfo) {
32
+ const {
33
+ layout,
34
+ section,
35
+ subSection
36
+ } = sectionInfo;
37
+ layout?.setSelectedSection(section);
38
+ section.setSelectedSubSection(subSection);
39
+ this.selectOverlay(table);
40
+ } else {
41
+ getControlById(table.getId())?.getDomRef()?.scrollIntoView();
42
+ this.selectOverlay(table);
43
+ }
44
+ if (this.iconTabBar && iconTabBarFilterKey) {
45
+ this.iconTabBar.setSelectedKey(iconTabBarFilterKey);
46
+ }
47
+ if (changeColumnActionId) {
48
+ const executeAction = async () => await this.context.actionService.execute(table.getId(), changeColumnActionId);
49
+ if (isA(SMART_TABLE_TYPE, table)) {
50
+ await executeAction();
51
+ } else if (isA(M_TABLE_TYPE, table)) {
52
+ // if table is busy, i.e. lazy loading, then we subscribe to 'updateFinished' event and call action service when loading is done
53
+ // to avoid reopening the dialog after close
54
+ if (this.isTableLoaded(table)) {
55
+ await executeAction();
56
+ } else {
57
+ table.attachEventOnce('updateFinished', executeAction, this);
58
+ }
59
+ }
60
+ }
61
+ return [];
62
+ }
63
+ isAbsoluteAggregationBinding(element, aggregationName) {
64
+ const mBindingInfo = element.getBindingInfo(aggregationName);
65
+ const path = mBindingInfo?.path;
66
+ if (!path) {
67
+ return false;
68
+ }
69
+ return path.indexOf('/') === 0;
70
+ }
71
+
72
+ /**
73
+ * Checks if table is loaded and has binding context available.
74
+ * This is needed to properly render change columns dialog.
75
+ * Based on {@link https://github.com/SAP/openui5/blob/rel-1.127/src/sap.ui.fl/src/sap/ui/fl/write/_internal/delegates/ODataV2ReadDelegate.js#L269-L271| ODataV2ReadDelegate.getPropertyInfo}.
76
+ *
77
+ * @param element - Table control.
78
+ * @returns True if binding context is available.
79
+ */
80
+ isTableLoaded(element) {
81
+ const aggregationName = 'items';
82
+ if (this.isAbsoluteAggregationBinding(element, aggregationName)) {
83
+ const bindingInfo = element.getBindingInfo(aggregationName);
84
+ // check to be default model binding otherwise return undefined
85
+ if (typeof bindingInfo.model === 'string' && bindingInfo.model !== '') {
86
+ return false;
87
+ }
88
+ return bindingInfo.path !== undefined;
89
+ } else {
90
+ // here we explicitly request the default models binding context
91
+ const bindingContext = element.getBindingContext();
92
+ return !!bindingContext;
93
+ }
94
+ }
95
+ }
96
+ var __exports = {
97
+ __esModule: true
98
+ };
99
+ __exports.CHANGE_TABLE_COLUMNS = CHANGE_TABLE_COLUMNS;
100
+ __exports.ChangeTableColumnsQuickAction = ChangeTableColumnsQuickAction;
101
+ return __exports;
102
102
  });
103
103
  //# sourceMappingURL=change-table-columns.js.map