@sapui5/sap.suite.ui.generic.template 1.130.1 → 1.131.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/package.json +1 -1
  2. package/src/sap/suite/ui/generic/template/.library +1 -1
  3. package/src/sap/suite/ui/generic/template/AnalyticalListPage/controller/ControllerImplementation.js +5 -1
  4. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_da.properties +2 -2
  5. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_de.properties +2 -2
  6. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_ko.properties +2 -2
  7. package/src/sap/suite/ui/generic/template/AnalyticalListPage/manifest.json +1 -1
  8. package/src/sap/suite/ui/generic/template/Canvas/manifest.json +1 -1
  9. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_de.properties +1 -1
  10. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_es.properties +1 -1
  11. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_hr.properties +1 -1
  12. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_ko.properties +2 -2
  13. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_sl.properties +1 -1
  14. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_th.properties +1 -1
  15. package/src/sap/suite/ui/generic/template/ListReport/manifest.json +1 -1
  16. package/src/sap/suite/ui/generic/template/ListReport/view/fragments/SmartTable.fragment.xml +6 -3
  17. package/src/sap/suite/ui/generic/template/ObjectPage/controller/RelatedAppsHandler.js +21 -9
  18. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_ar.properties +2 -2
  19. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_da.properties +1 -1
  20. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_es.properties +4 -4
  21. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_ko.properties +1 -1
  22. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_th.properties +1 -1
  23. package/src/sap/suite/ui/generic/template/ObjectPage/manifest.json +1 -1
  24. package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/Sections.fragment.xml +13 -13
  25. package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/SmartForm.fragment.xml +5 -5
  26. package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/SmartTable.fragment.xml +6 -3
  27. package/src/sap/suite/ui/generic/template/QuickCreate/i18n/i18n_fr_CA.properties +1 -1
  28. package/src/sap/suite/ui/generic/template/QuickCreate/manifest.json +1 -1
  29. package/src/sap/suite/ui/generic/template/QuickView/manifest.json +1 -1
  30. package/src/sap/suite/ui/generic/template/designtime/controls/DynamicPage.designtime.js +317 -0
  31. package/src/sap/suite/ui/generic/template/designtime/controls/SmartTable.designtime.js +121 -32
  32. package/src/sap/suite/ui/generic/template/designtime/floorplans/AnalyticalListPage.designtime.js +13 -6
  33. package/src/sap/suite/ui/generic/template/designtime/floorplans/ListReport.designtime.js +12 -5
  34. package/src/sap/suite/ui/generic/template/designtime/floorplans/ObjectPage.designtime.js +13 -5
  35. package/src/sap/suite/ui/generic/template/designtime/utils/designtimeHelper.js +53 -81
  36. package/src/sap/suite/ui/generic/template/designtime/utils/designtimeUtils.js +63 -21
  37. package/src/sap/suite/ui/generic/template/detailTemplates/i18n/i18n_es.properties +1 -1
  38. package/src/sap/suite/ui/generic/template/fragments/MessagePopover.fragment.xml +1 -1
  39. package/src/sap/suite/ui/generic/template/fragments/SmartFormDataField.fragment.xml +1 -1
  40. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartTableChartCommon.js +1 -1
  41. package/src/sap/suite/ui/generic/template/js/AnnotationHelper.js +6 -5
  42. package/src/sap/suite/ui/generic/template/js/AnnotationHelperStreamSupport.js +21 -8
  43. package/src/sap/suite/ui/generic/template/lib/AppComponent.js +227 -5
  44. package/src/sap/suite/ui/generic/template/lib/ComponentUtils.js +100 -67
  45. package/src/sap/suite/ui/generic/template/lib/FlexibleColumnLayoutHandler.js +9 -4
  46. package/src/sap/suite/ui/generic/template/lib/RetryAfterHandler.js +154 -54
  47. package/src/sap/suite/ui/generic/template/lib/SideEffectUtil.js +22 -7
  48. package/src/sap/suite/ui/generic/template/lib/StableIdDefinition.js +4 -1
  49. package/src/sap/suite/ui/generic/template/lib/TemplateAssembler.js +39 -41
  50. package/src/sap/suite/ui/generic/template/lib/ViewCreationHelper.js +39 -0
  51. package/src/sap/suite/ui/generic/template/lib/ai/EasyFilterBarHandler.js +2 -6
  52. package/src/sap/suite/ui/generic/template/lib/i18n/i18n.properties +20 -1
  53. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ar.properties +32 -0
  54. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_bg.properties +34 -2
  55. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ca.properties +32 -0
  56. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cnr.properties +32 -0
  57. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cs.properties +32 -0
  58. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cy.properties +32 -0
  59. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_da.properties +33 -1
  60. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_de.properties +34 -2
  61. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_el.properties +32 -0
  62. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en.properties +32 -0
  63. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_GB.properties +32 -0
  64. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_US_saprigi.properties +33 -0
  65. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_es.properties +36 -4
  66. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_es_MX.properties +32 -0
  67. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_et.properties +32 -0
  68. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fi.properties +32 -0
  69. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fr.properties +32 -0
  70. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fr_CA.properties +34 -2
  71. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hi.properties +33 -1
  72. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hr.properties +32 -0
  73. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hu.properties +34 -2
  74. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_id.properties +33 -1
  75. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_it.properties +32 -0
  76. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_iw.properties +33 -1
  77. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ja.properties +32 -0
  78. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_kk.properties +32 -0
  79. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ko.properties +34 -2
  80. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_lt.properties +32 -0
  81. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_lv.properties +32 -0
  82. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_mk.properties +32 -0
  83. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ms.properties +33 -1
  84. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_nl.properties +32 -0
  85. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_no.properties +32 -0
  86. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pl.properties +32 -0
  87. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pt.properties +32 -0
  88. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pt_PT.properties +32 -0
  89. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ro.properties +32 -0
  90. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ru.properties +32 -0
  91. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sh.properties +32 -0
  92. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sk.properties +32 -0
  93. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sl.properties +32 -0
  94. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sr.properties +32 -0
  95. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sv.properties +33 -1
  96. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_th.properties +32 -0
  97. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_tr.properties +32 -0
  98. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_uk.properties +32 -0
  99. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_vi.properties +32 -0
  100. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_zh_CN.properties +32 -0
  101. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_zh_TW.properties +32 -0
  102. package/src/sap/suite/ui/generic/template/lib/insights/InsightsCardHelper.js +39 -23
  103. package/src/sap/suite/ui/generic/template/lib/insights/InsightsFECardProvider.js +11 -2
  104. package/src/sap/suite/ui/generic/template/lib/multipleViews/MultipleTablesModeHelper.js +2 -1
  105. package/src/sap/suite/ui/generic/template/lib/navigation/NavigationController.js +95 -95
  106. package/src/sap/suite/ui/generic/template/library.js +1 -1
  107. package/src/sap/suite/ui/generic/template/listTemplates/fragments/DetailSmartTable.fragment.xml +6 -3
  108. package/src/sap/suite/ui/generic/template/themes/sap_horizon/ObjectPage.less +6 -0
  109. package/src/sap/suite/ui/generic/template/themes/sap_horizon_dark/ObjectPage.less +6 -0
@@ -0,0 +1,317 @@
1
+ /*!
2
+ * SAP UI development toolkit for HTML5 (SAPUI5)
3
+
4
+ (c) Copyright 2009-2015 SAP SE. All rights reserved
5
+
6
+ */
7
+ sap.ui.define([
8
+ "sap/base/util/deepClone",
9
+ "sap/base/util/ObjectPath",
10
+ "sap/suite/ui/generic/template/designtime/utils/designtimeUtils",
11
+ "sap/suite/ui/generic/template/genericUtilities/testableHelper"
12
+ ],
13
+ function (deepClone, ObjectPath, designtimeUtils, testableHelper) {
14
+ "use strict";
15
+ const { SettingScope } = designtimeUtils;
16
+
17
+ /**
18
+ * @typedef {Object} DesigntimeSetting
19
+ * @property {string} id - The ID of the designtime setting.
20
+ * @property {string} name - The name of the designtime setting.
21
+ * @property {string} description - The description of the designtime setting.
22
+ * @property {PropertyValue} [value] - The default value of the designtime setting.
23
+ * @property {string} type - The type of the designtime setting.
24
+ * @property {Array.<Enum>} [enums] - The array of possible enum values for the designtime setting.
25
+ * @property {(mControlDetails: ControlInfo) => string} [getPath] - The path to the designtime setting in the manifest.
26
+ * @property {boolean} [bSupportsGlobalScope] - Indicates if the setting supports global scope. (Default: false)
27
+ * @property {string[]} [restrictedTo] - The array of components for which the setting is restricted.
28
+ * @property {Partial<DesigntimeSetting>[]} [writeObject] - An array of DesigntimeSetting objects.
29
+ * @property {string} [writeObjectFor] - The value for which the writeObject should be applied.
30
+ * @property {boolean} [skipChange] - Indicates if the change should be skipped.
31
+
32
+ ===============================================
33
+ * @typedef {Object} ChangeParameters - Descriptor change parameters.
34
+ * @property {string} [sScope] - The scope of the manifest setting.
35
+ * @property {string} [sChangeType] - Desciptor change type.
36
+ ===============================================
37
+
38
+ * @typedef {Object} ControlInfo
39
+ * @property {string} sParentComponentName - The name of the parent component.
40
+ * @extends ChangeParameters
41
+
42
+ * @typedef {ChangeParameters & ControlInfo} ControlChangeParams
43
+
44
+ * @typedef {string | boolean | string[] | null } PropertyValue
45
+
46
+ * @typedef {Object} Enum
47
+ * @property {string} id - The ID of the enum value.
48
+ * @property {string} name - The name of the enum value.
49
+ * @property {Object} [value] - The value of the enum value.
50
+ */
51
+
52
+
53
+
54
+ /**
55
+ * Retrieves the runtime adaptation properties based on the allowed design-time settings and global settings.
56
+ *
57
+ * @param {Array} aAllowedDesigntimeSettings - The array of allowed design-time settings.
58
+ * @param {Object} mGlobalSettings - The global manifest settings object.
59
+ * @returns {Object} - The object containing the runtime adaptation properties.
60
+ */
61
+ function getRuntimeAdapationProperties(aAllowedDesigntimeSettings, mGlobalSettings) {
62
+ const mPropertyValues = {};
63
+
64
+ aAllowedDesigntimeSettings.forEach(oSetting => {
65
+ const sProperty = oSetting.id;
66
+ switch (sProperty) {
67
+ case "statePreservationMode":
68
+ mPropertyValues[sProperty] = mGlobalSettings[sProperty] || oSetting.value;
69
+ break;
70
+ case "flexibleColumnLayout":
71
+ mPropertyValues[sProperty] = !!mGlobalSettings.flexibleColumnLayout || oSetting.value;
72
+ break;
73
+ case "defaultTwoColumnLayoutType":
74
+ const manifestPath = "flexibleColumnLayout.defaultTwoColumnLayoutType";
75
+ mPropertyValues[sProperty] = ObjectPath.get(manifestPath, mGlobalSettings) || oSetting.value;
76
+ break;
77
+ case "defaultThreeColumnLayoutType":
78
+ const manifestPathThreeColumns = "flexibleColumnLayout.defaultThreeColumnLayoutType";
79
+ mPropertyValues[sProperty] = ObjectPath.get(manifestPathThreeColumns, mGlobalSettings) || oSetting.value;
80
+ break;
81
+ case "externalNavigationSettings":
82
+ mPropertyValues[sProperty] = mGlobalSettings[sProperty] || oSetting.value;
83
+ break;
84
+ case "inboundParameters":
85
+ mPropertyValues[sProperty] = mGlobalSettings[sProperty] || oSetting.value;
86
+ break;
87
+
88
+ default:
89
+ break;
90
+ }
91
+ });
92
+ return mPropertyValues;
93
+ }
94
+
95
+ /**
96
+ * Opens the dialog for the table configuration.
97
+ * @param {sap.ui.core.Control} oControl - The control for which the dialog should be opened.
98
+ * @param {object} mPropertyBag - The property bag.
99
+ * @returns {Promise<ControlChangeParams[]>} - The changes.
100
+ */
101
+ async function fnOpenTableConfigurationDialog(oControl, mPropertyBag) {
102
+ const oResourceModel = oControl.getModel("i18n");
103
+ const oComponent = designtimeUtils.getOwnerComponentFor(oControl);
104
+ const oAppComponent = oComponent.getAppComponent();
105
+ const sComponentName = oComponent.getMetadata().getComponentName();
106
+
107
+ const aAllowedDesigntimeSettings = getAllowedDesigntimeSettings(oControl);
108
+ const mGlobalSettings = designtimeUtils.getSupportedGlobalManifestSettings(oAppComponent);
109
+
110
+ // Get the current values of the properties
111
+ const mRuntimeAdaptationPropertyValues = getRuntimeAdapationProperties(aAllowedDesigntimeSettings, mGlobalSettings);
112
+ // Save the unchanged data to compare later
113
+ const mUnchangedData = deepClone(mRuntimeAdaptationPropertyValues);
114
+ // Get the settings of the dialog from the designtime settings using which the dialog will be created
115
+ const aItems = designtimeUtils.getSettings(mRuntimeAdaptationPropertyValues, aAllowedDesigntimeSettings);
116
+ // Add the scope of the changes
117
+ const oScopeControlData = {
118
+ type: "string",
119
+ "enum": [],
120
+ value: SettingScope.Page,
121
+ id: "scope",
122
+ disabled: false
123
+ };
124
+ const aChangeScopeOption = [
125
+ {
126
+ label: "Scope of the changes",
127
+ tooltip: "Scope of the changes",
128
+ control: [
129
+ oScopeControlData
130
+ ]
131
+ }
132
+ ];
133
+
134
+ // if the allowed designtime settings contain a setting that supports global scope
135
+ // then add the global scope option
136
+ const bSupportsGlobalScope = aAllowedDesigntimeSettings.some(oSetting => oSetting.bSupportsGlobalScope);
137
+ if (bSupportsGlobalScope) {
138
+ // @ts-ignore
139
+ oScopeControlData.enum.push({ id: SettingScope.Application, name: SettingScope.Application });
140
+ }
141
+ // disable the scope control if there is only one option
142
+ oScopeControlData.disabled = oScopeControlData.enum.length <= 1;
143
+
144
+ const mPropertyValuesEntered = await designtimeUtils.openAdaptionDialog([...aChangeScopeOption, ...aItems], mRuntimeAdaptationPropertyValues, mUnchangedData, "{i18n>RTA_CONFIGURATION_TITLE_LIST_REPORT}", { width: "650px", height: "800px" }, oResourceModel);
145
+
146
+ // if the scope is not set, set it to the default is "Application Scope"
147
+ mPropertyValuesEntered["scope"] = mPropertyValuesEntered["scope"] || SettingScope.Application;
148
+ mUnchangedData["scope"] = mUnchangedData["scope"] || SettingScope.Application;
149
+
150
+ /**
151
+ * @type {ControlChangeParams}
152
+ */
153
+ const mPathParameters = {
154
+ sChangeType: designtimeUtils.ChangeType.ChangePageConfiguration,
155
+ sParentComponentName: sComponentName,
156
+ sScope: mPropertyValuesEntered["scope"]
157
+ };
158
+ return designtimeUtils.extractChanges(mPropertyValuesEntered, mUnchangedData, aAllowedDesigntimeSettings, oComponent, mPathParameters);
159
+
160
+ }
161
+
162
+
163
+ /**
164
+ * Retrieves the designtime settings for the Control.
165
+ * @param {object} oControl - The Control object.
166
+ * @returns {DesigntimeSetting[]} - The designtime settings for the Control.
167
+ */
168
+ let getAllowedDesigntimeSettings = function getAllowedDesigntimeSettings(oControl) {
169
+
170
+ /**
171
+ * @type {DesigntimeSetting}
172
+ */
173
+ const statePreservationMode = {
174
+ id: "statePreservationMode",
175
+ name: "State Preservation Mode",
176
+ description: "The state preservation mode.",
177
+ value: "auto",
178
+ type: "string",
179
+ // "auto" - indicates that "persistence" should be used in FCL and "discovery" in non-FCL case
180
+ enums: [
181
+ { id: "auto", name: "Auto" },
182
+ { id: "persistence", name: "Persistence" },
183
+ { id: "discovery", name: "Discovery" }
184
+ ],
185
+ bSupportsGlobalScope: true,
186
+ getPath: (mControlDetails) => {
187
+ return "settings/statePreservationMode";
188
+ }
189
+ };
190
+
191
+ /**
192
+ * @type {DesigntimeSetting}
193
+ */
194
+ const flexibleColumnLayout = {
195
+ id: "flexibleColumnLayout",
196
+ name: "Flexible Column Layout (FCL)",
197
+ description: "The flexible column layout.",
198
+ type: "booleanOrString",
199
+ value: null,
200
+ bSupportsGlobalScope: true,
201
+ getPath: (mControlDetails) => {
202
+ return "settings/flexibleColumnLayout";
203
+ },
204
+ enums: [
205
+ { id: "null", name: "Standard", value: {} },
206
+ { id: "object", name: "Flexible Column Layout" }
207
+ ],
208
+ writeObject: [
209
+ {
210
+ id: "defaultTwoColumnLayoutType",
211
+ getPath: () => "defaultTwoColumnLayoutType",
212
+ description: "Select layout for 2 columns"
213
+ },
214
+ {
215
+ id: "defaultThreeColumnLayoutType", getPath: () => "defaultThreeColumnLayoutType",
216
+ description: "Select layout for 3 columns"
217
+ }
218
+ ],
219
+ writeObjectFor: "object"
220
+ };
221
+ /**
222
+ * @type {DesigntimeSetting}
223
+ */
224
+ const fclDefaultTwoColumnLayoutType = {
225
+ id: "defaultTwoColumnLayoutType",
226
+ name: "FCL / Default Two Column Layout Type",
227
+ description: "The default two column layout type.",
228
+ type: "string",
229
+ value: "TwoColumnsBeginExpanded",
230
+ enums: [
231
+ { id: "TwoColumnsBeginExpanded", name: "Begin-Expanded" },
232
+ { id: "TwoColumnsMidExpanded", name: "Mid-Expanded" }
233
+ ],
234
+ skipChange: true
235
+ };
236
+
237
+ /**
238
+ * @type {DesigntimeSetting}
239
+ */
240
+ const fclDefaultThreeColumnLayoutType = {
241
+ id: "defaultThreeColumnLayoutType",
242
+ name: "FCL / Default Three Column Layout Type",
243
+ description: "The default three column layout type.",
244
+ type: "string",
245
+ value: "ThreeColumnsMidExpanded",
246
+ enums: [
247
+ { id: "ThreeColumnsMidExpanded", name: "Mid-Expanded" },
248
+ { id: "ThreeColumnsEndExpanded", name: "End-Expanded" }
249
+ ],
250
+ skipChange: true
251
+ };
252
+
253
+ /**
254
+ * @type {DesigntimeSetting}
255
+ */
256
+ const externalNavigationSettings = {
257
+ id: "externalNavigationSettings",
258
+ name: "External Navigation Settings",
259
+ description: "The external navigation settings.",
260
+ type: "json",
261
+ value: undefined
262
+ };
263
+
264
+ /**
265
+ * @type {DesigntimeSetting}
266
+ */
267
+ const inboundParameters = {
268
+ id: "inboundParameters",
269
+ name: "Inbound Parameters",
270
+ description: "The inbound parameters.",
271
+ type: "json",
272
+ value: undefined
273
+ };
274
+
275
+
276
+ /**
277
+ * @type {DesigntimeSetting[]}
278
+ */
279
+ const designtimeSettings = [
280
+ statePreservationMode,
281
+ flexibleColumnLayout,
282
+ fclDefaultTwoColumnLayoutType,
283
+ fclDefaultThreeColumnLayoutType,
284
+ externalNavigationSettings,
285
+ inboundParameters
286
+
287
+ ];
288
+ return designtimeSettings.filter(oSetting => {
289
+ const sComponentName = designtimeUtils.getOwnerComponentFor(oControl).getMetadata().getComponentName();
290
+ return !oSetting.restrictedTo || oSetting.restrictedTo.includes(sComponentName);
291
+ });
292
+ };
293
+
294
+ // Expose the functions for QUnit tests
295
+
296
+ testableHelper.testableStatic(getRuntimeAdapationProperties, "getRuntimeAdapationProperties");
297
+ testableHelper.testableStatic(fnOpenTableConfigurationDialog, "fnOpenTableConfigurationDialog");
298
+
299
+
300
+ const oHelper = {
301
+ getDesigntime: function (oControl) {
302
+ return {
303
+ actions: {
304
+ settings: {
305
+ fe: {
306
+ name: "Configuration",
307
+ icon: "sap-icon://developer-settings",
308
+ handler: fnOpenTableConfigurationDialog
309
+ }
310
+ }
311
+ }
312
+ };
313
+ }
314
+ };
315
+ return oHelper;
316
+ }
317
+ );
@@ -14,6 +14,7 @@ sap.ui.define([
14
14
  "use strict";
15
15
 
16
16
  const sObjectPageComponentName = "sap.suite.ui.generic.template.ObjectPage";
17
+ const sListReportComponentName = "sap.suite.ui.generic.template.ListReport";
17
18
  const { SettingScope } = designtimeUtils;
18
19
 
19
20
  /**
@@ -27,6 +28,7 @@ sap.ui.define([
27
28
  * @property {(mSmartTableDetails: SmartTableInfo) => string=} getPath - The path to the designtime setting in the manifest.
28
29
  * @property {boolean=} bSupportsGlobalScope - Indicates if the setting supports global scope. (Default: false)
29
30
  * @property {string[]=} restrictedTo - The array of components for which the setting is restricted.
31
+ * @property {boolean=} bGlobalSettingsOnly - Indicates if the setting is only available in global settings. (Default: false)
30
32
  */
31
33
 
32
34
  /**
@@ -48,7 +50,7 @@ sap.ui.define([
48
50
  */
49
51
 
50
52
  /**
51
- * @typedef {string | boolean | string[] } PropertyValue
53
+ * @typedef {number | string | boolean | string[] } PropertyValue
52
54
  */
53
55
 
54
56
  /**
@@ -81,7 +83,7 @@ sap.ui.define([
81
83
  }
82
84
 
83
85
  function getManifestTableSettings(oSmartTable) {
84
- const oComponent = designtimeUtils.getComponent(oSmartTable);
86
+ const oComponent = designtimeUtils.getOwnerComponentFor(oSmartTable);
85
87
  const oAppComponent = oComponent.getAppComponent();
86
88
  const oSupportedGlobalTableSettings = designtimeUtils.getSupportedGlobalManifestSettings(oAppComponent)?.["tableSettings"] || {};
87
89
 
@@ -106,7 +108,7 @@ sap.ui.define([
106
108
  }
107
109
 
108
110
  function getSectionKey(oSmartTable) {
109
- const sSmartTableId = designtimeUtils.getLocalId(oSmartTable.getId());
111
+ const sSmartTableId = designtimeUtils.getLocalId(oSmartTable);
110
112
  // ID must not be of the inner table
111
113
  return sSmartTableId.split("::Table")[0];
112
114
  }
@@ -138,6 +140,18 @@ sap.ui.define([
138
140
  case "selectAll":
139
141
  mPropertyValues[sProperty] = oTableSettings.selectAll || oSetting.value;
140
142
  break;
143
+ case "condensedTableLayout":
144
+ mPropertyValues[sProperty] = oTableSettings.condensedTableLayout || oSetting.value;
145
+ break;
146
+ case "widthIncludingColumnHeader":
147
+ mPropertyValues[sProperty] = oTableSettings.widthIncludingColumnHeader || oSetting.value;
148
+ break;
149
+ case "addCardtoInsightsHidden":
150
+ mPropertyValues[sProperty] = oTableSettings.addCardtoInsightsHidden || oSetting.value;
151
+ break;
152
+ case "selectionLimit":
153
+ mPropertyValues[sProperty] = oTableSettings.selectionLimit || oSetting.value;
154
+ break;
141
155
  default:
142
156
  break;
143
157
  }
@@ -146,16 +160,26 @@ sap.ui.define([
146
160
  }
147
161
 
148
162
  async function fnOpenTableConfigurationDialog(oSmartTable, mPropertyBag) {
149
- const oComponent = designtimeUtils.getComponent(oSmartTable);
163
+ const oResourceModel = oSmartTable.getModel("i18n");
164
+ const oComponent = designtimeUtils.getOwnerComponentFor(oSmartTable);
150
165
  const sComponentName = oComponent.getMetadata().getComponentName();
151
166
  // Get the allowed designtime settings for the SmartTable
152
167
  const aAllowedDesigntimeSettings = getAllowedDesigntimeSettings(oSmartTable);
153
168
 
169
+ // Get the other table properties outside of the tableSettings Eg: settings/condensedTableLayout
170
+ const aOtherTableProperties = ["condensedTableLayout"];
171
+
172
+ const mOtherTableSettings = aOtherTableProperties.reduce((mSettings, sProperty) => {
173
+ mSettings[sProperty] = oComponent.getProperty(sProperty);
174
+ return mSettings;
175
+ }, {});
176
+
154
177
  // Get the table settings from the manifest
155
- const oTableSettings = getManifestTableSettings(oSmartTable);
178
+ const mTableSettings = getManifestTableSettings(oSmartTable);
156
179
 
157
180
  // Get the current values of the properties
158
- const mRuntimeAdaptationPropertyValues = getRuntimeAdapationProperties(aAllowedDesigntimeSettings, oTableSettings);
181
+ const mRuntimeAdaptationPropertyValues = getRuntimeAdapationProperties(aAllowedDesigntimeSettings, Object.assign(mOtherTableSettings, mTableSettings));
182
+
159
183
  // Save the unchanged data to compare later
160
184
  const mUnchangedData = deepClone(mRuntimeAdaptationPropertyValues);
161
185
  // Get the settings of the dialog from the designtime settings using which the dialog will be created
@@ -186,16 +210,17 @@ sap.ui.define([
186
210
  oScopeControlData.enum.push({ id: SettingScope.Control, name: SettingScope.Control });
187
211
  }
188
212
 
189
- // if the allowed designtime settings contain a setting that supports global scope
213
+ // if the allowed designtime settings contain a setting that supports global scope which is not a global settings only
190
214
  // then add the global scope option
191
- const bSupportsGlobalScope = aAllowedDesigntimeSettings.some(oSetting => oSetting.bSupportsGlobalScope);
192
- if (bSupportsGlobalScope) {
215
+ const bShowGlobalScopeOption = aAllowedDesigntimeSettings.some(oSetting => oSetting.bSupportsGlobalScope && !oSetting.bGlobalSettingsOnly);
216
+
217
+ if (bShowGlobalScopeOption) {
193
218
  oScopeControlData.enum.push({ id: SettingScope.Application, name: SettingScope.Application });
194
219
  }
195
220
  // disable the scope control if there is only one option
196
221
  oScopeControlData.disabled = oScopeControlData.enum.length <= 1;
197
222
 
198
- const mPropertyValuesEntered = await designtimeUtils.openAdaptionDialog([...aChangeScopeOption, ...aItems], mRuntimeAdaptationPropertyValues, mUnchangedData, "Change Table Configuration", { width: "650px", height: "800px" });
223
+ const mPropertyValuesEntered = await designtimeUtils.openAdaptionDialog([...aChangeScopeOption, ...aItems], mRuntimeAdaptationPropertyValues, mUnchangedData, "{i18n>RTA_CONFIGURATION_TITLE_TABLE}", { width: "650px", height: "800px" }, oResourceModel);
199
224
 
200
225
  const sSelectedTabKey = getSelectedTabKey(oSmartTable);
201
226
  const sSelectedVariantKey = sSelectedTabKey ? getVariantInfo(oComponent, sSelectedTabKey)[0] : null;
@@ -294,14 +319,19 @@ sap.ui.define([
294
319
  /**
295
320
  * @type {DesigntimeSetting}
296
321
  */
297
- const multiSelect = {
322
+
323
+ const selectionMode = {
298
324
  id: "multiSelect",
299
- name: "Multi Select",
300
- description: "Define if the table should support multi selection",
325
+ name: "Selection Mode",
326
+ description: "Define the selection mode",
301
327
  value: false,
302
- type: "boolean",
328
+ type: "booleanOrString",
303
329
  getPath: getPathForTableSettings("multiSelect"),
304
- bSupportsGlobalScope: false
330
+ bSupportsGlobalScope: false,
331
+ enums: [
332
+ { id: "false", name: "Single" },
333
+ { id: "true", name: "Multi" }
334
+ ]
305
335
  };
306
336
 
307
337
  /**
@@ -309,7 +339,7 @@ sap.ui.define([
309
339
  */
310
340
  const selectAll = {
311
341
  id: "selectAll",
312
- name: "Select All",
342
+ name: "Enable Select All",
313
343
  description: "Define if the table should support select all",
314
344
  value: false,
315
345
  type: "boolean",
@@ -317,34 +347,93 @@ sap.ui.define([
317
347
  bSupportsGlobalScope: false
318
348
  };
319
349
 
350
+ // /**
351
+ // * @type {DesigntimeSetting}
352
+ // */
353
+ // const createMode = {
354
+ // id: "createMode",
355
+ // name: "Create Mode",
356
+ // description: "Define the create mode",
357
+ // value: "creationRows",
358
+ // type: "string",
359
+ // getPath: getPathForTableSettings("createMode", true),
360
+ // enums: [
361
+ // { id: "creationRows", name: "creationRows" },
362
+ // { id: "NewPage", name: "NewPage" },
363
+ // { id: "Inline", name: "Inline" }
364
+ // ],
365
+ // bSupportsGlobalScope: true,
366
+ // restrictedTo: [sObjectPageComponentName]
367
+ // };
320
368
 
321
369
  /**
322
370
  * @type {DesigntimeSetting}
323
371
  */
324
- const createMode = {
325
- id: "createMode",
326
- name: "Create Mode",
327
- description: "Define the create mode",
328
- value: "creationRows",
329
- type: "string",
330
- getPath: getPathForTableSettings("createMode", true),
331
- enums: [
332
- { id: "creationRows", name: "creationRows" },
333
- { id: "NewPage", name: "NewPage" },
334
- { id: "Inline", name: "Inline" }
335
- ],
372
+ const condensedTableLayout = {
373
+ id: "condensedTableLayout",
374
+ name: "Condensed Table Layout",
375
+ description: "Define if the table should have a condensed layout",
376
+ value: false,
377
+ type: "boolean",
378
+ getPath: () => "component/settings/condensedTableLayout",
379
+ bSupportsGlobalScope: false
380
+ };
381
+
382
+ /**
383
+ * @type {DesigntimeSetting}
384
+ */
385
+ const widthIncludingColumnHeader = {
386
+ id: "widthIncludingColumnHeader",
387
+ name: "Width Including Column Header",
388
+ description: "Define if the table should have a width including column header",
389
+ value: false,
390
+ type: "boolean",
391
+ getPath: getPathForTableSettings("widthIncludingColumnHeader"),
336
392
  bSupportsGlobalScope: true,
337
- restrictedTo: [sObjectPageComponentName]
393
+ restrictedTo: [sListReportComponentName],
394
+ bGlobalSettingsOnly: true
395
+ };
396
+
397
+ /**
398
+ * @type {DesigntimeSetting}
399
+ */
400
+ const addCardtoInsightsHidden = {
401
+ id: "addCardtoInsightsHidden",
402
+ name: "Disable Insights",
403
+ description: "Define if the table should have a insights button",
404
+ value: false,
405
+ type: "boolean",
406
+ getPath: getPathForTableSettings("addCardtoInsightsHidden"),
407
+ restrictedTo: [sListReportComponentName]
408
+ };
409
+
410
+ /**
411
+ * @type {DesigntimeSetting}
412
+ */
413
+ const selectionLimit = {
414
+ id: "selectionLimit",
415
+ name: "Selection Limit",
416
+ description: "Define the selection limit",
417
+ value: 300,
418
+ type: "number",
419
+ getPath: getPathForTableSettings("selectionLimit")
338
420
  };
339
421
 
422
+
423
+
340
424
  const designtimeSettings = [
341
425
  tableType,
342
- multiSelect,
426
+ condensedTableLayout,
427
+ widthIncludingColumnHeader,
428
+ selectionMode,
343
429
  selectAll,
344
- createMode
430
+ // createMode,
431
+ selectionLimit,
432
+ addCardtoInsightsHidden
345
433
  ];
434
+
346
435
  return designtimeSettings.filter(oSetting => {
347
- const sComponentName = designtimeUtils.getComponent(oSmartTable).getMetadata().getComponentName();
436
+ const sComponentName = designtimeUtils.getOwnerComponentFor(oSmartTable).getMetadata().getComponentName();
348
437
  return !oSetting.restrictedTo || oSetting.restrictedTo.includes(sComponentName);
349
438
  });
350
439
  };
@@ -39,7 +39,7 @@ sap.ui.define(["sap/suite/ui/generic/template/designtime/utils/designtimeHelper"
39
39
  properties: ["visible", "icon", "activeIcon", "type", "tooltip"]
40
40
  },
41
41
  "sap.ui.comp.smartfilterbar.SmartFilterBar": {
42
- properties: ["liveMode", "showClearOnFB", "showFilterConfiguration", "showRestoreOnFB"]
42
+ properties: ["liveMode", "showClearOnFB", "showFilterConfiguration", "showRestoreOnFB", "considerPresentationVariant"]
43
43
  },
44
44
  "sap.m.Table": {
45
45
  properties: ["growingThreshold"]
@@ -49,6 +49,15 @@ sap.ui.define(["sap/suite/ui/generic/template/designtime/utils/designtimeHelper"
49
49
  },
50
50
  "sap.ui.table.Column": {
51
51
  properties: ["width", "hAlign"]
52
+ },
53
+ "sap.ui.table.Table": {
54
+ properties: ["scrollThreshold"]
55
+ },
56
+ "sap.ui.table.AnalyticalTable": {
57
+ properties: ["scrollThreshold"]
58
+ },
59
+ "sap.ui.table.TreeTable": {
60
+ properties: ["scrollThreshold"]
52
61
  }
53
62
  };
54
63
 
@@ -111,17 +120,15 @@ sap.ui.define(["sap/suite/ui/generic/template/designtime/utils/designtimeHelper"
111
120
  "sap.ui.comp.smartchart.SmartChart": {
112
121
  actions: ["compVariant"] // allows table personalization (same as for end user)
113
122
  },
114
- "sap.ui.comp.navpopover.SmartLink" : {
123
+ "sap.ui.comp.navpopover.SmartLink": {
115
124
  actions: ["settings"]
116
125
  }
117
126
  };
118
127
  // there's no reliable way to differentiate designtime adaptation and key user adaptation. However
119
128
  // - property changes are possible only in designtime adaptation
120
129
  // - for any other changes (using change handlers), we anyway need to be prepared for the change if it is allowed in one mode, so it shouldn't matter if it's also possible in the other mode
121
- return designtimeHelper.getRtaModeValue()
122
- .then(function (sRtaModeValue) {
123
- var mAllow = sRtaModeValue === designtimeHelper.FioriToolsRtaMode.True ? mAllowVariantManagement : designtimeHelper.getMergedAllowList([mAllowLevel0, mGreyLevel0, mAllowKeyUser]);
130
+ const sRtaModeValue = designtimeHelper.getRtaModeValue();
131
+ const mAllow = sRtaModeValue === designtimeHelper.FioriToolsRtaMode.True ? mAllowVariantManagement : designtimeHelper.getMergedAllowList([mAllowLevel0, mGreyLevel0, mAllowKeyUser]);
124
132
  return designtimeHelper.getViewDesignTime(mAllow, sRtaModeValue);
125
- });
126
133
  });
127
134
 
@@ -16,7 +16,7 @@ sap.ui.define(["sap/suite/ui/generic/template/designtime/utils/designtimeHelper"
16
16
  properties: ["fitContent"]
17
17
  },
18
18
  "sap.ui.comp.smartfilterbar.SmartFilterBar": {
19
- properties: ["liveMode"]
19
+ properties: ["liveMode", "considerPresentationVariant"]
20
20
  },
21
21
  "sap.ui.comp.smarttable.SmartTable": {
22
22
  properties: ["useExportToExcel"],
@@ -51,6 +51,15 @@ sap.ui.define(["sap/suite/ui/generic/template/designtime/utils/designtimeHelper"
51
51
  },
52
52
  "sap.m.IconTabFilter": {
53
53
  properties: ["text"]
54
+ },
55
+ "sap.ui.table.Table": {
56
+ properties: ["scrollThreshold"]
57
+ },
58
+ "sap.ui.table.AnalyticalTable": {
59
+ properties: ["scrollThreshold"]
60
+ },
61
+ "sap.ui.table.TreeTable": {
62
+ properties: ["scrollThreshold"]
54
63
  }
55
64
  };
56
65
 
@@ -180,10 +189,8 @@ sap.ui.define(["sap/suite/ui/generic/template/designtime/utils/designtimeHelper"
180
189
  // there's no reliable way to differentiate designtime adaptation and key user adaptation. However
181
190
  // - property changes are possible only in designtime adaptation
182
191
  // - for any other changes (using change handlers), we anyway need to be prepared for the change if it is allowed in one mode, so it shouldn't matter if it's also possible in the other mode
183
- return designtimeHelper.getRtaModeValue()
184
- .then(function (sRtaModeValue) {
185
- var mAllow = sRtaModeValue === designtimeHelper.FioriToolsRtaMode.True ? mAllowVariantManagement : designtimeHelper.getMergedAllowList([mAllowLevel0, mGreyLevel0, mAllowKeyUser]);
192
+ const sRtaModeValue = designtimeHelper.getRtaModeValue();
193
+ const mAllow = sRtaModeValue === designtimeHelper.FioriToolsRtaMode.True ? mAllowVariantManagement : designtimeHelper.getMergedAllowList([mAllowLevel0, mGreyLevel0, mAllowKeyUser]);
186
194
  return designtimeHelper.getViewDesignTime(mAllow, sRtaModeValue);
187
195
  });
188
- });
189
196