@openui5/sap.ui.integration 1.115.0 → 1.116.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 (146) hide show
  1. package/.reuse/dep5 +0 -5
  2. package/THIRDPARTY.txt +1 -7
  3. package/package.json +6 -6
  4. package/src/sap/ui/integration/.library +1 -1
  5. package/src/sap/ui/integration/ActionDefinition.js +1 -1
  6. package/src/sap/ui/integration/Designtime.js +1 -1
  7. package/src/sap/ui/integration/Extension.js +2 -2
  8. package/src/sap/ui/integration/Host.js +15 -1
  9. package/src/sap/ui/integration/cards/AdaptiveContent.js +1 -1
  10. package/src/sap/ui/integration/cards/AnalyticalContent.js +1 -1
  11. package/src/sap/ui/integration/cards/AnalyticsCloudContent.js +5 -1
  12. package/src/sap/ui/integration/cards/BaseContent.js +5 -3
  13. package/src/sap/ui/integration/cards/BaseListContent.js +1 -1
  14. package/src/sap/ui/integration/cards/CalendarContent.js +110 -78
  15. package/src/sap/ui/integration/cards/ComponentContent.js +1 -1
  16. package/src/sap/ui/integration/cards/Footer.js +1 -1
  17. package/src/sap/ui/integration/cards/Header.js +7 -1
  18. package/src/sap/ui/integration/cards/ListContent.js +11 -3
  19. package/src/sap/ui/integration/cards/NumericHeader.js +2 -1
  20. package/src/sap/ui/integration/cards/ObjectContent.js +15 -2
  21. package/src/sap/ui/integration/cards/TableContent.js +6 -2
  22. package/src/sap/ui/integration/cards/TimelineContent.js +1 -1
  23. package/src/sap/ui/integration/cards/WebPageContent.js +1 -1
  24. package/src/sap/ui/integration/cards/actions/CardActions.js +1 -1
  25. package/src/sap/ui/integration/cards/adaptivecards/elements/UI5InputChoiceSet.js +1 -1
  26. package/src/sap/ui/integration/cards/adaptivecards/elements/UI5InputDate.js +1 -1
  27. package/src/sap/ui/integration/cards/adaptivecards/elements/UI5InputNumber.js +1 -1
  28. package/src/sap/ui/integration/cards/adaptivecards/elements/UI5InputText.js +1 -1
  29. package/src/sap/ui/integration/cards/adaptivecards/elements/UI5InputToggle.js +1 -1
  30. package/src/sap/ui/integration/cards/filters/BaseFilter.js +1 -1
  31. package/src/sap/ui/integration/cards/filters/DateRangeFilter.js +1 -1
  32. package/src/sap/ui/integration/cards/filters/FilterBar.js +1 -1
  33. package/src/sap/ui/integration/cards/filters/FilterBarFactory.js +1 -1
  34. package/src/sap/ui/integration/cards/filters/SearchFilter.js +1 -1
  35. package/src/sap/ui/integration/cards/filters/SelectFilter.js +1 -1
  36. package/src/sap/ui/integration/cards/list/MicrochartsResizeHelper.js +1 -1
  37. package/src/sap/ui/integration/controls/ActionsStrip.js +1 -1
  38. package/src/sap/ui/integration/controls/ActionsToolbar.js +1 -1
  39. package/src/sap/ui/integration/controls/BlockingMessage.js +4 -4
  40. package/src/sap/ui/integration/controls/LinkWithIcon.js +1 -1
  41. package/src/sap/ui/integration/controls/ListContentItem.js +16 -9
  42. package/src/sap/ui/integration/controls/ListContentItemRenderer.js +1 -1
  43. package/src/sap/ui/integration/controls/Microchart.js +5 -3
  44. package/src/sap/ui/integration/controls/MicrochartLegend.js +1 -1
  45. package/src/sap/ui/integration/controls/ObjectStatus.js +1 -1
  46. package/src/sap/ui/integration/controls/Paginator.js +3 -4
  47. package/src/sap/ui/integration/controls/PaginatorRenderer.js +1 -1
  48. package/src/sap/ui/integration/designtime/baseEditor/BaseEditor.js +1 -1
  49. package/src/sap/ui/integration/designtime/baseEditor/PropertyEditor.js +1 -1
  50. package/src/sap/ui/integration/designtime/baseEditor/PropertyEditors.js +1 -1
  51. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/BasePropertyEditor.js +1 -1
  52. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/PropertyEditorFactory.js +1 -1
  53. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/arrayEditor/ArrayEditor.js +1 -1
  54. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/booleanEditor/BooleanEditor.js +1 -1
  55. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/codeEditor/CodeEditor.js +1 -1
  56. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/dateEditor/DateEditor.js +1 -1
  57. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/dateTimeEditor/DateTimeEditor.js +1 -1
  58. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/enumStringEditor/EnumStringEditor.js +1 -1
  59. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/groupEditor/GroupEditor.js +1 -1
  60. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/iconEditor/IconEditor.js +1 -1
  61. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/iconEditor/IsInIconPool.validator.js +1 -1
  62. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/integerEditor/IntegerEditor.js +1 -1
  63. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/jsonEditor/JsonEditor.js +1 -1
  64. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/listEditor/ListEditor.js +1 -1
  65. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/mapEditor/MapEditor.js +1 -1
  66. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/multiSelectEditor/MultiSelectEditor.js +1 -1
  67. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/numberEditor/NumberEditor.js +1 -1
  68. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/objectArrayEditor/ObjectArrayEditor.js +1 -1
  69. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/selectEditor/SelectEditor.js +1 -1
  70. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/separatorEditor/SeparatorEditor.js +1 -1
  71. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/stringEditor/StringEditor.js +1 -1
  72. package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/textAreaEditor/TextAreaEditor.js +1 -1
  73. package/src/sap/ui/integration/designtime/baseEditor/util/binding/ObjectBinding.js +1 -1
  74. package/src/sap/ui/integration/designtime/baseEditor/util/unset.js +1 -1
  75. package/src/sap/ui/integration/designtime/baseEditor/validator/IsBoolean.js +1 -1
  76. package/src/sap/ui/integration/designtime/baseEditor/validator/IsDate.js +1 -1
  77. package/src/sap/ui/integration/designtime/baseEditor/validator/IsInteger.js +1 -1
  78. package/src/sap/ui/integration/designtime/baseEditor/validator/IsNumber.js +1 -1
  79. package/src/sap/ui/integration/designtime/baseEditor/validator/IsSelectedKey.js +1 -1
  80. package/src/sap/ui/integration/designtime/baseEditor/validator/IsStringList.js +1 -1
  81. package/src/sap/ui/integration/designtime/baseEditor/validator/IsUniqueKey.js +1 -1
  82. package/src/sap/ui/integration/designtime/baseEditor/validator/IsUniqueList.js +1 -1
  83. package/src/sap/ui/integration/designtime/baseEditor/validator/IsValidBinding.js +1 -1
  84. package/src/sap/ui/integration/designtime/baseEditor/validator/MaxLength.js +1 -1
  85. package/src/sap/ui/integration/designtime/baseEditor/validator/NotABinding.js +1 -1
  86. package/src/sap/ui/integration/designtime/baseEditor/validator/ValidatorRegistry.js +1 -1
  87. package/src/sap/ui/integration/designtime/cardEditor/propertyEditor/complexMapEditor/ComplexMapEditor.js +1 -1
  88. package/src/sap/ui/integration/designtime/cardEditor/propertyEditor/destinationsEditor/DestinationsEditor.js +1 -1
  89. package/src/sap/ui/integration/designtime/cardEditor/propertyEditor/filtersEditor/FiltersEditor.js +1 -1
  90. package/src/sap/ui/integration/designtime/cardEditor/propertyEditor/iconEditor/IconEditor.js +1 -1
  91. package/src/sap/ui/integration/designtime/cardEditor/propertyEditor/parametersEditor/ParametersEditor.js +1 -1
  92. package/src/sap/ui/integration/designtime/editor/Card.js +1 -1
  93. package/src/sap/ui/integration/designtime/editor/CardEditor.js +1 -1
  94. package/src/sap/ui/integration/designtime/editor/CardPreview.js +35 -33
  95. package/src/sap/ui/integration/designtime/editor/css/CardPreview.css +30 -18
  96. package/src/sap/ui/integration/editor/Editor.js +50 -18
  97. package/src/sap/ui/integration/editor/EditorResourceBundles.js +1 -1
  98. package/src/sap/ui/integration/editor/Extension.js +1 -1
  99. package/src/sap/ui/integration/editor/Manifest.js +1 -1
  100. package/src/sap/ui/integration/editor/Settings.js +1 -1
  101. package/src/sap/ui/integration/editor/fields/BaseField.js +1 -1
  102. package/src/sap/ui/integration/editor/fields/BooleanField.js +1 -1
  103. package/src/sap/ui/integration/editor/fields/DateField.js +1 -1
  104. package/src/sap/ui/integration/editor/fields/DateTimeField.js +1 -1
  105. package/src/sap/ui/integration/editor/fields/DestinationField.js +2 -1
  106. package/src/sap/ui/integration/editor/fields/GroupField.js +1 -1
  107. package/src/sap/ui/integration/editor/fields/IntegerField.js +1 -1
  108. package/src/sap/ui/integration/editor/fields/NumberField.js +1 -1
  109. package/src/sap/ui/integration/editor/fields/ObjectField.js +1 -1
  110. package/src/sap/ui/integration/editor/fields/ObjectListField.js +1 -1
  111. package/src/sap/ui/integration/editor/fields/StringField.js +1 -1
  112. package/src/sap/ui/integration/editor/fields/StringListField.js +1 -1
  113. package/src/sap/ui/integration/editor/fields/fragment/Controller.js +1 -1
  114. package/src/sap/ui/integration/editor/fields/viz/ColorSelect.js +1 -1
  115. package/src/sap/ui/integration/editor/fields/viz/IconSelect.js +1 -1
  116. package/src/sap/ui/integration/editor/fields/viz/ShapeSelect.js +1 -1
  117. package/src/sap/ui/integration/editor/fields/viz/VizBase.js +1 -1
  118. package/src/sap/ui/integration/library.js +5 -4
  119. package/src/sap/ui/integration/model/ContextModel.js +1 -1
  120. package/src/sap/ui/integration/model/ObservableModel.js +1 -1
  121. package/src/sap/ui/integration/model/PagingModelListBinding.js +1 -1
  122. package/src/sap/ui/integration/schemas/sap-card.json +66 -2
  123. package/src/sap/ui/integration/util/BaseFactory.js +1 -1
  124. package/src/sap/ui/integration/util/BindingHelper.js +1 -1
  125. package/src/sap/ui/integration/util/BindingResolver.js +1 -1
  126. package/src/sap/ui/integration/util/CardObserver.js +1 -1
  127. package/src/sap/ui/integration/util/ContentFactory.js +1 -2
  128. package/src/sap/ui/integration/util/CsrfTokenHandler.js +1 -1
  129. package/src/sap/ui/integration/util/DataProvider.js +6 -8
  130. package/src/sap/ui/integration/util/DataProviderFactory.js +1 -1
  131. package/src/sap/ui/integration/util/Destinations.js +1 -1
  132. package/src/sap/ui/integration/util/Duration.js +104 -0
  133. package/src/sap/ui/integration/util/ErrorHandler.js +1 -1
  134. package/src/sap/ui/integration/util/ExtensionDataProvider.js +1 -1
  135. package/src/sap/ui/integration/util/Form.js +11 -5
  136. package/src/sap/ui/integration/util/HeaderFactory.js +1 -1
  137. package/src/sap/ui/integration/util/JSONBindingHelper.js +1 -1
  138. package/src/sap/ui/integration/util/LoadingProvider.js +1 -1
  139. package/src/sap/ui/integration/util/Manifest.js +19 -4
  140. package/src/sap/ui/integration/util/RequestDataProvider.js +6 -2
  141. package/src/sap/ui/integration/util/ServiceDataProvider.js +1 -1
  142. package/src/sap/ui/integration/util/ServiceManager.js +1 -1
  143. package/src/sap/ui/integration/util/SkeletonCard.js +1 -1
  144. package/src/sap/ui/integration/util/Utils.js +1 -1
  145. package/src/sap/ui/integration/util/Validators.js +1 -1
  146. package/src/sap/ui/integration/widgets/Card.js +61 -31
@@ -6,6 +6,7 @@
6
6
 
7
7
  sap.ui.define([
8
8
  "sap/ui/base/Object",
9
+ "sap/base/util/LoaderExtensions",
9
10
  "sap/ui/core/Manifest",
10
11
  "sap/base/util/deepClone",
11
12
  "sap/base/util/deepExtend",
@@ -17,6 +18,7 @@ sap.ui.define([
17
18
  "sap/ui/integration/util/CardMerger"
18
19
  ], function (
19
20
  BaseObject,
21
+ LoaderExtensions,
20
22
  CoreManifest,
21
23
  deepClone,
22
24
  deepExtend,
@@ -64,7 +66,7 @@ sap.ui.define([
64
66
  * @extends sap.ui.base.Object
65
67
  *
66
68
  * @author SAP SE
67
- * @version 1.115.0
69
+ * @version 1.116.0
68
70
  *
69
71
  * @constructor
70
72
  * @private
@@ -75,6 +77,7 @@ sap.ui.define([
75
77
  constructor: function (sSection, oManifestJson, sBaseUrl, aChanges) {
76
78
  BaseObject.call(this);
77
79
 
80
+ this._sBaseUrl = sBaseUrl;
78
81
  this._aChanges = aChanges;
79
82
  this._sSection = sSection;
80
83
 
@@ -91,11 +94,12 @@ sap.ui.define([
91
94
 
92
95
  if (sBaseUrl) {
93
96
  mOptions.baseUrl = sBaseUrl;
94
- this._sBaseUrl = sBaseUrl;
95
97
  } else {
96
- Log.warning("If no base URL is provided when the manifest is an object static resources cannot be loaded.");
98
+ Log.error("If baseUrl is not provided when the manifest is an object, the relative resources cannot be loaded.", "sap.ui.integration.widgets.Card");
97
99
  }
98
100
 
101
+ this._registerManifestModulePath(oManifestJson, sBaseUrl || "/");
102
+
99
103
  if (this._aChanges) {
100
104
  oMergedManifest = this.mergeDeltaChanges(oManifestJson);
101
105
  } else {
@@ -230,7 +234,8 @@ sap.ui.define([
230
234
  manifestUrl: mSettings.manifestUrl,
231
235
  async: true,
232
236
  processJson: function (oManifestJson) {
233
-
237
+ var sModuleBaseUrl = this._sBaseUrl || mSettings.manifestUrl.replace(/\/+[^\/]*$/, "") || "/";
238
+ this._registerManifestModulePath(oManifestJson, sModuleBaseUrl);
234
239
  this._oInitialJson = deepClone(oManifestJson, 500);
235
240
 
236
241
  if (this._aChanges) {
@@ -618,5 +623,15 @@ sap.ui.define([
618
623
  return aResult;
619
624
  };
620
625
 
626
+ Manifest.prototype._registerManifestModulePath = function (oManifestJson, sBaseUrl) {
627
+ var sAppId = oManifestJson && oManifestJson["sap.app"] && oManifestJson["sap.app"].id;
628
+
629
+ if (!sAppId) {
630
+ return;
631
+ }
632
+
633
+ LoaderExtensions.registerResourcePath(sAppId.replace(/\./g, "/"), sBaseUrl);
634
+ };
635
+
621
636
  return Manifest;
622
637
  });
@@ -65,7 +65,7 @@ sap.ui.define([
65
65
  * @extends sap.ui.integration.util.DataProvider
66
66
  *
67
67
  * @author SAP SE
68
- * @version 1.115.0
68
+ * @version 1.116.0
69
69
  *
70
70
  * @constructor
71
71
  * @private
@@ -261,7 +261,11 @@ sap.ui.define([
261
261
 
262
262
  return oResponse.text().then(function (vData) {
263
263
  if (isJsonResponse(oResponse)) {
264
- vData = JSON.parse(vData !== "" ? vData : null);
264
+ try {
265
+ vData = JSON.parse(vData);
266
+ } catch (oError) {
267
+ return Promise.reject([oError.toString(), null, null, oRequest]);
268
+ }
265
269
  } else if (isXmlResponse(oResponse)) {
266
270
  vData = (new window.DOMParser()).parseFromString(vData, "text/xml");
267
271
  }
@@ -17,7 +17,7 @@ sap.ui.define(["sap/ui/integration/util/DataProvider"], function (DataProvider)
17
17
  * @extends sap.ui.integration.util.DataProvider
18
18
  *
19
19
  * @author SAP SE
20
- * @version 1.115.0
20
+ * @version 1.116.0
21
21
  *
22
22
  * @constructor
23
23
  * @private
@@ -37,7 +37,7 @@ sap.ui.define([
37
37
  * @extends sap.ui.base.EventProvider
38
38
  *
39
39
  * @author SAP SE
40
- * @version 1.115.0
40
+ * @version 1.116.0
41
41
  *
42
42
  * @constructor
43
43
  * @param {Object} mServiceFactoryReferences A map with service descriptions.
@@ -23,7 +23,7 @@ sap.ui.define([
23
23
  * @extends sap.ui.integration.widgets.Card
24
24
  *
25
25
  * @author SAP SE
26
- * @version 1.115.0
26
+ * @version 1.116.0
27
27
  *
28
28
  * @constructor
29
29
  * @private
@@ -25,7 +25,7 @@ sap.ui.define([
25
25
  * Utility class helping with JSON strings and formatters.
26
26
  *
27
27
  * @author SAP SE
28
- * @version 1.115.0
28
+ * @version 1.116.0
29
29
  *
30
30
  * @private
31
31
  * @alias sap.ui.integration.util.Utils
@@ -11,7 +11,7 @@ sap.ui.define([], function () {
11
11
  * Utility class helping with input validations.
12
12
  *
13
13
  * @author SAP SE
14
- * @version 1.115.0
14
+ * @version 1.116.0
15
15
  *
16
16
  * @private
17
17
  * @alias sap.ui.integration.util.Validators
@@ -183,7 +183,7 @@ sap.ui.define([
183
183
  * @extends sap.f.CardBase
184
184
  *
185
185
  * @author SAP SE
186
- * @version 1.115.0
186
+ * @version 1.116.0
187
187
  * @public
188
188
  * @constructor
189
189
  * @see {@link topic:5b46b03f024542ba802d99d67bc1a3f4 Cards}
@@ -236,7 +236,8 @@ sap.ui.define([
236
236
  },
237
237
 
238
238
  /**
239
- * Defines the base URL of the Card Manifest. It should be used when manifest property is an object instead of a URL.
239
+ * Defines the base URL of the card manifest. It should be used when manifest property is an object instead of a URL.
240
+ * If both manifest URL and base URL are defined - the base URL will be used for loading dependencies.
240
241
  * @experimental Since 1.70
241
242
  * @since 1.70
242
243
  */
@@ -532,6 +533,8 @@ sap.ui.define([
532
533
  this._bDataReady = true;
533
534
  }.bind(this);
534
535
 
536
+ this._fireStateChangedBound = this._fireStateChanged.bind(this);
537
+
535
538
  /**
536
539
  * Facade of the {@link sap.ui.integration.widgets.Card} control.
537
540
  * @interface
@@ -539,7 +542,7 @@ sap.ui.define([
539
542
  * @experimental since 1.79
540
543
  * @public
541
544
  * @author SAP SE
542
- * @version 1.115.0
545
+ * @version 1.116.0
543
546
  * @borrows sap.ui.integration.widgets.Card#getDomRef as getDomRef
544
547
  * @borrows sap.ui.integration.widgets.Card#setVisible as setVisible
545
548
  * @borrows sap.ui.integration.widgets.Card#getParameters as getParameters
@@ -843,7 +846,7 @@ sap.ui.define([
843
846
  };
844
847
 
845
848
  /**
846
- * Instantiates a Card Manifest and applies it.
849
+ * Instantiates a card manifest and applies it.
847
850
  *
848
851
  * @private
849
852
  * @param {object|string} vManifest The manifest URL or the manifest JSON.
@@ -876,6 +879,10 @@ sap.ui.define([
876
879
  throw new Error(CARD_DESTROYED_ERROR);
877
880
  }
878
881
 
882
+ if (!this._oCardManifest.get("/sap.app/id")) {
883
+ this._logSevereError("Card sap.app/id entry in the manifest is mandatory");
884
+ }
885
+
879
886
  return this._oCardManifest.loadDependenciesAndIncludes();
880
887
  }.bind(this))
881
888
  .then(function () {
@@ -884,7 +891,6 @@ sap.ui.define([
884
891
  }
885
892
 
886
893
  Measurement.end(this._sPerformanceId + "initManifest");
887
- this._registerManifestModulePath();
888
894
  this._isManifestReady = true;
889
895
  this.fireManifestReady();
890
896
 
@@ -1219,10 +1225,10 @@ sap.ui.define([
1219
1225
  this.resetPaginator();
1220
1226
  };
1221
1227
 
1222
- /*
1223
- * @private
1224
- * @ui5-restricted sap.ui.integration
1225
- * */
1228
+ /**
1229
+ * @private
1230
+ * @ui5-restricted sap.ui.integration
1231
+ */
1226
1232
  Card.prototype.refreshAllData = function () {
1227
1233
  var oHeader = this.getCardHeader(),
1228
1234
  oContent = this.getCardContent(),
@@ -1287,6 +1293,7 @@ sap.ui.define([
1287
1293
  this._oIntegrationRb = null;
1288
1294
  this._aActiveLoadingProviders = null;
1289
1295
  this._oContentMessage = null;
1296
+ clearTimeout(this._iFireStateChangedCallId);
1290
1297
 
1291
1298
  if (this._oActionsToolbar) {
1292
1299
  this._oActionsToolbar.destroy();
@@ -1362,22 +1369,6 @@ sap.ui.define([
1362
1369
  this._setLoadingProviderState(false);
1363
1370
  };
1364
1371
 
1365
- /**
1366
- * Registers the manifest ID as a module path.
1367
- */
1368
- Card.prototype._registerManifestModulePath = function () {
1369
- if (!this._oCardManifest) {
1370
- return;
1371
- }
1372
-
1373
- this._sAppId = this._oCardManifest.get("/sap.app/id");
1374
- if (this._sAppId) {
1375
- LoaderExtensions.registerResourcePath(this._sAppId.replace(/\./g, "/"), this._oCardManifest.getUrl() || "/");
1376
- } else {
1377
- this._logSevereError("Card sap.app/id entry in the manifest is mandatory");
1378
- }
1379
- };
1380
-
1381
1372
  /**
1382
1373
  * Overwrites getter for card manifest.
1383
1374
  *
@@ -1551,7 +1542,7 @@ sap.ui.define([
1551
1542
 
1552
1543
  if (oContent) {
1553
1544
  oContent.showBlockingMessage(oSettings);
1554
- this._fireStateChanged();
1545
+ this.scheduleFireStateChanged();
1555
1546
  }
1556
1547
  };
1557
1548
 
@@ -1642,7 +1633,7 @@ sap.ui.define([
1642
1633
  * Absolute paths are not changed.
1643
1634
  *
1644
1635
  * @example
1645
- * oCard.getRuntimeUrl("images/Avatar.png") === "sample/card/images/Avatar.png"
1636
+ * oCard.getRuntimeUrl("images/Avatar.png") === "{cardBaseUrl}/images/Avatar.png"
1646
1637
  * oCard.getRuntimeUrl("http://www.someurl.com/Avatar.png") === "http://www.someurl.com/Avatar.png"
1647
1638
  * oCard.getRuntimeUrl("https://www.someurl.com/Avatar.png") === "https://www.someurl.com/Avatar.png"
1648
1639
  *
@@ -1651,7 +1642,7 @@ sap.ui.define([
1651
1642
  * @returns {string} The resolved URL.
1652
1643
  */
1653
1644
  Card.prototype.getRuntimeUrl = function (sUrl) {
1654
- var sAppId = this._sAppId,
1645
+ var sAppId = this._oCardManifest ? this._oCardManifest.get("/sap.app/id") : null,
1655
1646
  sAppName,
1656
1647
  sSanitizedUrl = sUrl && sUrl.trim().replace(/^\//, "");
1657
1648
 
@@ -2029,7 +2020,6 @@ sap.ui.define([
2029
2020
  serviceManager: this._oServiceManager,
2030
2021
  dataProviderFactory: this._oDataProviderFactory,
2031
2022
  iconFormatter: this._oIconFormatter,
2032
- appId: this._sAppId,
2033
2023
  noDataConfiguration: this._oCardManifest.get(MANIFEST_PATHS.NO_DATA_MESSAGES)
2034
2024
  });
2035
2025
  } catch (e) {
@@ -2594,6 +2584,23 @@ sap.ui.define([
2594
2584
  }
2595
2585
  };
2596
2586
 
2587
+ /**
2588
+ * Schedules to fire the stateChanged event. If called multiple times in the same tick, only one stateChanged will be fired.
2589
+ * @private
2590
+ * @ui5-restricted sap.ui.integration
2591
+ */
2592
+ Card.prototype.scheduleFireStateChanged = function () {
2593
+ if (this._iFireStateChangedCallId) {
2594
+ clearTimeout(this._iFireStateChangedCallId);
2595
+ }
2596
+
2597
+ this._iFireStateChangedCallId = setTimeout(this._fireStateChangedBound, 0);
2598
+ };
2599
+
2600
+ /**
2601
+ * Fires the stateChanged event of the card and of the host if any.
2602
+ * @private
2603
+ */
2597
2604
  Card.prototype._fireStateChanged = function () {
2598
2605
  var oHostInstance = this.getHostInstance();
2599
2606
 
@@ -2610,9 +2617,31 @@ sap.ui.define([
2610
2617
  }
2611
2618
  };
2612
2619
 
2620
+ /**
2621
+ * Fires the initial ready event of the card and of the host if any.
2622
+ * This ready event is fired only once and will not be fired consecutively, even if the card is fully refreshed.
2623
+ * @private
2624
+ */
2625
+ Card.prototype._fireInitialized = function () {
2626
+ if (this._bInitializedFired) {
2627
+ return;
2628
+ }
2629
+
2630
+ var oHostInstance = this.getHostInstance();
2631
+
2632
+ this.fireEvent("_initialized");
2633
+ this._bInitializedFired = true;
2634
+
2635
+ if (oHostInstance) {
2636
+ oHostInstance.fireCardInitialized({
2637
+ card: this
2638
+ });
2639
+ }
2640
+ };
2641
+
2613
2642
  Card.prototype._fireDataChange = function () {
2614
2643
  this.fireEvent("_dataChange");
2615
- this._fireStateChanged();
2644
+ this.scheduleFireStateChanged();
2616
2645
  };
2617
2646
 
2618
2647
  Card.prototype._fireContentDataChange = function () {
@@ -2625,7 +2654,8 @@ sap.ui.define([
2625
2654
  this._setActionButtonsEnabled(true);
2626
2655
  this._validateContentControls(false, true);
2627
2656
  this.fireEvent("_ready");
2628
- this._fireStateChanged();
2657
+ this._fireInitialized();
2658
+ this.scheduleFireStateChanged();
2629
2659
  };
2630
2660
 
2631
2661
  /**