@sapui5/sap.fe.core 1.136.1 → 1.136.3

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 (114) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AppComponent.js +7 -1
  4. package/src/sap/fe/core/AppComponent.ts +10 -0
  5. package/src/sap/fe/core/AppStateHandler.js +9 -2
  6. package/src/sap/fe/core/AppStateHandler.ts +8 -2
  7. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.js +2 -1
  8. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.ts +1 -0
  9. package/src/sap/fe/core/controllerextensions/EditFlow.js +63 -35
  10. package/src/sap/fe/core/controllerextensions/EditFlow.ts +80 -47
  11. package/src/sap/fe/core/controllerextensions/InlineEditFlow.js +27 -41
  12. package/src/sap/fe/core/controllerextensions/InlineEditFlow.ts +27 -41
  13. package/src/sap/fe/core/controllerextensions/InternalRouting.js +16 -2
  14. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +15 -1
  15. package/src/sap/fe/core/controllerextensions/MessageHandler.js +4 -4
  16. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +22 -15
  17. package/src/sap/fe/core/controllerextensions/SideEffects.js +7 -5
  18. package/src/sap/fe/core/controllerextensions/SideEffects.ts +10 -7
  19. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +2 -1
  20. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +1 -0
  21. package/src/sap/fe/core/controllerextensions/dialog/ODataStrictDialog.js +9 -5
  22. package/src/sap/fe/core/controllerextensions/dialog/ODataStrictDialog.tsx +8 -3
  23. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +30 -3
  24. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +26 -3
  25. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +21 -16
  26. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +36 -16
  27. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.js +12 -26
  28. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.ts +25 -44
  29. package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.js +2 -2
  30. package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.ts +1 -1
  31. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +8 -6
  32. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +13 -4
  33. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +15 -5
  34. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +21 -6
  35. package/src/sap/fe/core/controls/inlineEditFlow/InlineEditExitDialog.js +144 -0
  36. package/src/sap/fe/core/controls/inlineEditFlow/{BeforeNavigationDialog.tsx → InlineEditExitDialog.tsx} +1 -1
  37. package/src/sap/fe/core/converters/controls/Common/Action.js +17 -12
  38. package/src/sap/fe/core/converters/controls/Common/Action.ts +19 -11
  39. package/src/sap/fe/core/converters/controls/Common/Table.js +25 -3
  40. package/src/sap/fe/core/converters/controls/Common/Table.ts +31 -2
  41. package/src/sap/fe/core/converters/controls/Common/table/Columns.js +13 -11
  42. package/src/sap/fe/core/converters/controls/Common/table/Columns.ts +15 -2
  43. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +19 -5
  44. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +28 -5
  45. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +11 -6
  46. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +17 -10
  47. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +28 -3
  48. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +26 -1
  49. package/src/sap/fe/core/designtime/messagebundle_en_US_saprigi.properties +7 -0
  50. package/src/sap/fe/core/fpm/manifest.json +1 -1
  51. package/src/sap/fe/core/helpers/DeleteHelper.js +12 -10
  52. package/src/sap/fe/core/helpers/DeleteHelper.ts +9 -10
  53. package/src/sap/fe/core/helpers/ModelHelper.js +43 -4
  54. package/src/sap/fe/core/helpers/ModelHelper.ts +48 -3
  55. package/src/sap/fe/core/library.js +1 -1
  56. package/src/sap/fe/core/messagebundle.properties +4 -0
  57. package/src/sap/fe/core/messagebundle_ar.properties +5 -4
  58. package/src/sap/fe/core/messagebundle_bg.properties +2 -1
  59. package/src/sap/fe/core/messagebundle_ca.properties +2 -1
  60. package/src/sap/fe/core/messagebundle_cnr.properties +2 -1
  61. package/src/sap/fe/core/messagebundle_cs.properties +4 -3
  62. package/src/sap/fe/core/messagebundle_cy.properties +2 -1
  63. package/src/sap/fe/core/messagebundle_da.properties +2 -1
  64. package/src/sap/fe/core/messagebundle_de.properties +8 -7
  65. package/src/sap/fe/core/messagebundle_el.properties +4 -3
  66. package/src/sap/fe/core/messagebundle_en.properties +2 -1
  67. package/src/sap/fe/core/messagebundle_en_GB.properties +2 -1
  68. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +4 -1
  69. package/src/sap/fe/core/messagebundle_es.properties +5 -4
  70. package/src/sap/fe/core/messagebundle_es_MX.properties +2 -1
  71. package/src/sap/fe/core/messagebundle_et.properties +2 -1
  72. package/src/sap/fe/core/messagebundle_fi.properties +2 -1
  73. package/src/sap/fe/core/messagebundle_fr.properties +4 -3
  74. package/src/sap/fe/core/messagebundle_fr_CA.properties +2 -1
  75. package/src/sap/fe/core/messagebundle_hi.properties +2 -1
  76. package/src/sap/fe/core/messagebundle_hr.properties +2 -1
  77. package/src/sap/fe/core/messagebundle_hu.properties +2 -1
  78. package/src/sap/fe/core/messagebundle_id.properties +4 -3
  79. package/src/sap/fe/core/messagebundle_it.properties +2 -1
  80. package/src/sap/fe/core/messagebundle_iw.properties +2 -1
  81. package/src/sap/fe/core/messagebundle_ja.properties +3 -2
  82. package/src/sap/fe/core/messagebundle_kk.properties +2 -1
  83. package/src/sap/fe/core/messagebundle_ko.properties +6 -5
  84. package/src/sap/fe/core/messagebundle_lt.properties +2 -1
  85. package/src/sap/fe/core/messagebundle_lv.properties +2 -1
  86. package/src/sap/fe/core/messagebundle_mk.properties +2 -1
  87. package/src/sap/fe/core/messagebundle_ms.properties +2 -1
  88. package/src/sap/fe/core/messagebundle_nl.properties +2 -1
  89. package/src/sap/fe/core/messagebundle_no.properties +3 -2
  90. package/src/sap/fe/core/messagebundle_pl.properties +2 -1
  91. package/src/sap/fe/core/messagebundle_pt.properties +2 -1
  92. package/src/sap/fe/core/messagebundle_pt_PT.properties +2 -1
  93. package/src/sap/fe/core/messagebundle_ro.properties +2 -1
  94. package/src/sap/fe/core/messagebundle_ru.properties +2 -1
  95. package/src/sap/fe/core/messagebundle_sh.properties +2 -1
  96. package/src/sap/fe/core/messagebundle_sk.properties +2 -1
  97. package/src/sap/fe/core/messagebundle_sl.properties +2 -1
  98. package/src/sap/fe/core/messagebundle_sr.properties +2 -1
  99. package/src/sap/fe/core/messagebundle_sv.properties +2 -1
  100. package/src/sap/fe/core/messagebundle_th.properties +2 -1
  101. package/src/sap/fe/core/messagebundle_tr.properties +2 -1
  102. package/src/sap/fe/core/messagebundle_uk.properties +2 -1
  103. package/src/sap/fe/core/messagebundle_vi.properties +9 -8
  104. package/src/sap/fe/core/messagebundle_zh_CN.properties +2 -1
  105. package/src/sap/fe/core/messagebundle_zh_TW.properties +2 -1
  106. package/src/sap/fe/core/rootView/Fcl.controller.js +8 -3
  107. package/src/sap/fe/core/rootView/Fcl.controller.ts +14 -7
  108. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +8 -2
  109. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.ts +7 -1
  110. package/src/sap/fe/core/templating/EntitySetHelper.js +75 -90
  111. package/src/sap/fe/core/templating/EntitySetHelper.ts +92 -118
  112. package/src/sap/fe/core/controls/inlineEditFlow/BeforeActionDialog.js +0 -68
  113. package/src/sap/fe/core/controls/inlineEditFlow/BeforeActionDialog.tsx +0 -52
  114. package/src/sap/fe/core/controls/inlineEditFlow/BeforeNavigationDialog.js +0 -144
@@ -6,8 +6,7 @@ import CommonUtils from "sap/fe/core/CommonUtils";
6
6
  import type PageController from "sap/fe/core/PageController";
7
7
  import BaseControllerExtension from "sap/fe/core/controllerextensions/BaseControllerExtension";
8
8
  import messageHandling from "sap/fe/core/controllerextensions/messageHandler/messageHandling";
9
- import BeforeActionDialog from "sap/fe/core/controls/inlineEditFlow/BeforeActionDialog";
10
- import BeforeNavigationDialog, { type DIALOGRESULT } from "sap/fe/core/controls/inlineEditFlow/BeforeNavigationDialog";
9
+ import InlineEditExitDialog, { type DIALOGRESULT } from "sap/fe/core/controls/inlineEditFlow/InlineEditExitDialog";
11
10
  import * as MetaModelConverter from "sap/fe/core/converters/MetaModelConverter";
12
11
  import { isProperty } from "sap/fe/core/helpers/TypeGuards";
13
12
  import { type DataModelObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
@@ -273,6 +272,25 @@ export default class InlineEditFlow extends BaseControllerExtension {
273
272
  */
274
273
  @methodOverride("routing")
275
274
  async onBeforeNavigation(): Promise<boolean> {
275
+ try {
276
+ await this.onBeforeAnyEditFlowAction();
277
+ return false;
278
+ } catch (e) {
279
+ return true;
280
+ }
281
+ }
282
+
283
+ /**
284
+ * Method to open the dialog before navigation.
285
+ * @returns Promise that returns the dialog choice once the user has clicked on ok or cancel
286
+ */
287
+ async openInlineEditExitDialogAndWaitForResult(): Promise<DIALOGRESULT> {
288
+ return new Promise<DIALOGRESULT>((resolve) => {
289
+ new InlineEditExitDialog(this.base.getView(), resolve).open();
290
+ });
291
+ }
292
+
293
+ async onBeforeAnyEditFlowAction(): Promise<void> {
276
294
  if (this.inlineEditControls.length > 0) {
277
295
  // there are controls in inline edit we need to prevent the navigation and show the dialog
278
296
  this.preventFieldGroupChangeHandler = true;
@@ -283,13 +301,13 @@ export default class InlineEditFlow extends BaseControllerExtension {
283
301
  if (!this.base.getView().getModel().hasPendingChanges(CommonUtils.INLINEEDIT_UPDATEGROUPID)) {
284
302
  // fields are in inline edit and there are no pending changes. We need to show the dialog
285
303
  this.inlineEditEnd();
286
- return false;
304
+ return;
287
305
  }
288
306
  try {
289
307
  if (this.patchPromise) {
290
308
  await this.patchPromise;
291
309
  } else {
292
- const dialogResult = await this.openInlineEditBeforeNavigationDialogAndWaitForResult();
310
+ const dialogResult = await this.openInlineEditExitDialogAndWaitForResult();
293
311
  if (dialogResult === "Save") {
294
312
  // we save and wait for the patchPromise
295
313
  await this.inlineEditSave();
@@ -297,58 +315,26 @@ export default class InlineEditFlow extends BaseControllerExtension {
297
315
  // if after saves there are still changes this means save has failed. we need to cancel navigation
298
316
  this.focusHandling(this.inlineEditControls[0]);
299
317
  this.reactivateFieldGroupChangeHandler();
300
- return true;
318
+ throw new Error("unsave change prevent execution");
301
319
  }
302
320
  } else if (dialogResult === "Cancel") {
303
321
  this.focusHandling(this.inlineEditControls[0]);
304
322
  this.reactivateFieldGroupChangeHandler();
305
- return true;
323
+ throw new Error("cancel was chosen");
306
324
  } else {
307
325
  // we discard the changes
308
326
  this.inlineEditDiscard();
309
327
  }
310
328
  this.reactivateFieldGroupChangeHandler();
311
- return false;
329
+ return;
312
330
  }
313
331
  } catch (e) {
314
332
  this.focusHandling(this.inlineEditControls[0]);
315
333
  this.reactivateFieldGroupChangeHandler();
316
- return true;
334
+ return Promise.reject();
317
335
  }
318
336
  }
319
- return false;
320
- }
321
-
322
- /**
323
- * Method to open the dialog before navigation.
324
- * @returns Promise that returns the dialog choice once the user has clicked on ok or cancel
325
- */
326
- async openInlineEditBeforeNavigationDialogAndWaitForResult(): Promise<DIALOGRESULT> {
327
- return new Promise<DIALOGRESULT>((resolve) => {
328
- new BeforeNavigationDialog(this.base.getView(), resolve).open();
329
- });
330
- }
331
-
332
- /**
333
- * Method to ensure we leave inline edit before any standard edit flowaction.
334
- * @returns Promise that reject and triggers save or discard if we are in inline edit
335
- */
336
- async onBeforeAnyEditFlowAction(): Promise<void> {
337
- if (this.inlineEditControls.length > 0) {
338
- if (this.abortTimerBeforeSave) {
339
- this.abortTimerBeforeSave();
340
- this.abortTimerBeforeSave = undefined;
341
- }
342
- if (!this.base.getView().getModel().hasPendingChanges(CommonUtils.INLINEEDIT_UPDATEGROUPID)) {
343
- // fields are in inline edit and there are no pending changes. We don't need to show the dialog
344
- this.inlineEditEnd();
345
- return Promise.resolve();
346
- }
347
- new BeforeActionDialog(this.base.getView()).open();
348
- // there are controls in inline edit we need to prevent the action and show the dialog
349
- return Promise.reject();
350
- }
351
- return Promise.resolve();
337
+ return;
352
338
  }
353
339
 
354
340
  /**