@sapui5/sap.ui.export 1.131.1 → 1.133.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.ui.export",
3
- "version": "1.131.1",
3
+ "version": "1.133.0",
4
4
  "description": "SAPUI5 Library sap.ui.export",
5
5
  "homepage": "https://sap.github.io/ui5-tooling/pages/SAPUI5/",
6
6
  "author": "SAP SE (https://www.sap.com)",
@@ -5,7 +5,7 @@
5
5
  <vendor>SAP SE</vendor>
6
6
  <copyright>SAPUI5
7
7
  * (c) Copyright 2009-2024 SAP SE. All rights reserved.</copyright>
8
- <version>1.131.1</version>
8
+ <version>1.133.0</version>
9
9
 
10
10
  <documentation>UI5 library: sap.ui.export</documentation>
11
11
 
@@ -27,7 +27,7 @@ sap.ui.define([
27
27
  * @class The <code>sap.ui.export.ExportBase</code> class allows you to export table data from a UI5 application to certain formats. This class is an abstract class that requires specific implementations for each file format.
28
28
  *
29
29
  * @author SAP SE
30
- * @version 1.131.1
30
+ * @version 1.133.0
31
31
  *
32
32
  * @since 1.96
33
33
  * @alias sap.ui.export.ExportBase
@@ -7,11 +7,12 @@ sap.ui.define([
7
7
  "./ExportUtils",
8
8
  "./ExportDialog",
9
9
  "./util/PDFCapabilities",
10
+ "sap/base/Log",
10
11
  "sap/m/MessageToast",
11
12
  "sap/ui/base/EventProvider",
12
13
  "sap/ui/model/odata/v4/ODataModel",
13
14
  "sap/ui/util/openWindow"
14
- ], function(library, ExportUtils, ExportDialog, PDFCapabilities, MessageToast, EventProvider, ODataModel, openWindow) {
15
+ ], function(library, ExportUtils, ExportDialog, PDFCapabilities, Log, MessageToast, EventProvider, ODataModel, openWindow) {
15
16
  "use strict";
16
17
 
17
18
  const Destination = library.Destination;
@@ -27,7 +28,7 @@ sap.ui.define([
27
28
  * @class The <code>sap.ui.export.ExportHandler</code> class allows you to export table data from an SAPUI5 application.
28
29
  *
29
30
  * @author SAP SE
30
- * @version 1.131.1
31
+ * @version 1.133.0
31
32
  *
32
33
  * @since 1.102
33
34
  * @alias sap.ui.export.ExportHandler
@@ -185,7 +186,12 @@ sap.ui.define([
185
186
  this._oFileShareBinding = oModel.bindList("/FileShares");
186
187
  }
187
188
 
188
- return this._oFileShareBinding.requestContexts(0);
189
+ try {
190
+ return await this._oFileShareBinding.requestContexts(0);
191
+ } catch (oError) {
192
+ Log.error(oError?.message ?? oError);
193
+ return [];
194
+ }
189
195
  };
190
196
 
191
197
  /**
@@ -9,6 +9,7 @@ sap.ui.define([
9
9
  "sap/base/Log",
10
10
  "sap/base/i18n/Formatting",
11
11
  "sap/base/i18n/Localization",
12
+ "sap/base/i18n/date/CalendarType",
12
13
  "sap/ui/core/Element",
13
14
  "sap/ui/core/Fragment",
14
15
  "sap/ui/core/InvisibleMessage",
@@ -23,7 +24,7 @@ sap.ui.define([
23
24
  "sap/ui/performance/trace/FESRHelper",
24
25
  "sap/ui/util/openWindow",
25
26
  "sap/ui/VersionInfo"
26
- ], function(library, Filter, BaseConfig, Log, Formatting, Localization, Element, Fragment, InvisibleMessage, Library, Locale, DateFormat, coreLibrary, syncStyleClass, LocaleData, JSONModel, ResourceModel, FESRHelper, openWindow, VersionInfo) {
27
+ ], function(library, Filter, BaseConfig, Log, Formatting, Localization, CalendarType, Element, Fragment, InvisibleMessage, Library, Locale, DateFormat, coreLibrary, syncStyleClass, LocaleData, JSONModel, ResourceModel, FESRHelper, openWindow, VersionInfo) {
27
28
  "use strict";
28
29
 
29
30
  // eslint-disable-next-line
@@ -31,7 +32,6 @@ sap.ui.define([
31
32
 
32
33
  // Shortcuts
33
34
  const ValueState = coreLibrary.ValueState;
34
- const CalendarType = coreLibrary.CalendarType;
35
35
  const FileType = library.FileType;
36
36
  const EdmType = library.EdmType;
37
37
  const Destination = library.Destination;
@@ -75,7 +75,7 @@ sap.ui.define([
75
75
  fileTypeCollection: [],
76
76
  fileType: "XLSX",
77
77
  destinationCollection: [
78
- {key: Destination.LOCAL, text: oResourceBundle.getText("DESTINATION_LOCAL")}
78
+ { key: Destination.LOCAL, text: oResourceBundle.getText("DESTINATION_LOCAL") }
79
79
  ],
80
80
  destination: Destination.LOCAL,
81
81
  paperSize: "DIN_A4",
@@ -88,12 +88,12 @@ sap.ui.define([
88
88
  capabilities: oExportCapabilities,
89
89
  fitToPage: false,
90
90
  paperSizeCollection: [
91
- {key: "DIN_A4", text: oResourceBundle.getText("PAPER_SIZE_A4")},
92
- {key: "US_LETTER", text: oResourceBundle.getText("PAPER_SIZE_US_LETTER")}
91
+ { key: "DIN_A4", text: oResourceBundle.getText("PAPER_SIZE_A4") },
92
+ { key: "US_LETTER", text: oResourceBundle.getText("PAPER_SIZE_US_LETTER") }
93
93
  ],
94
94
  orientationCollection: [
95
- {key:"LANDSCAPE", text: oResourceBundle.getText("ORIENTATION_LAND")},
96
- {key:"PORTRAIT", text: oResourceBundle.getText("ORIENTATION_PORT")}
95
+ { key:"LANDSCAPE", text: oResourceBundle.getText("ORIENTATION_LAND") },
96
+ { key:"PORTRAIT", text: oResourceBundle.getText("ORIENTATION_PORT") }
97
97
  ],
98
98
  fontSize: 10,
99
99
  signature: false,
@@ -144,7 +144,7 @@ sap.ui.define([
144
144
  * @class Utilities related to export to enable reuse in integration scenarios (e.g. tables).
145
145
  *
146
146
  * @author SAP SE
147
- * @version 1.131.1
147
+ * @version 1.133.0
148
148
  *
149
149
  * @since 1.59
150
150
  * @alias sap.ui.export.ExportUtils
@@ -246,10 +246,6 @@ sap.ui.define([
246
246
  * @private
247
247
  */
248
248
  getExportSettingsViaDialog: function(mCustomConfig, oExportCapabilities, bRemoteDestination, oOpener, fnCallback) {
249
- function isPDFFileShareExportEnabled() {
250
- return document.location.search.includes("sap-ui-xx-pdfFileShareExport=true") && oExportCapabilities?.PDF?.UploadToFileShare;
251
- }
252
-
253
249
  return new Promise(function (fnResolve, fnReject) {
254
250
  let oExportSettingsDialog;
255
251
 
@@ -306,8 +302,7 @@ sap.ui.define([
306
302
  return sValue === FileType.XLSX || sValue === FileType.GSHEET;
307
303
  },
308
304
  isDestinationEnabled: function(sFileType) {
309
- // URL Parameter dependend activation of PDF File Share Export
310
- return isPDFFileShareExportEnabled() ? sFileType !== FileType.GSHEET : sFileType === FileType.XLSX;
305
+ return oExportCapabilities?.PDF?.UploadToFileShare ? sFileType !== FileType.GSHEET : sFileType === FileType.XLSX;
311
306
  },
312
307
  hasDestinations: function(aDestinationCollection) {
313
308
  return aDestinationCollection.length > 1;
@@ -357,11 +352,6 @@ sap.ui.define([
357
352
 
358
353
  switch (oSelectedItem.getKey()) {
359
354
  case FileType.PDF:
360
- // URL Parameter dependend activation of PDF File Share Export
361
- if (!isPDFFileShareExportEnabled()) {
362
- oExportConfigModel.setProperty("/destination", Destination.LOCAL);
363
- }
364
-
365
355
  oExportConfigModel.setProperty("/includeFilterSettings", false);
366
356
  fnSetSemanticStepName(oExportConfigModel, oExportSettingsDialog.getBeginButton());
367
357
  break;
@@ -1218,7 +1208,7 @@ sap.ui.define([
1218
1208
  *
1219
1209
  * @param {object} oContext Context object
1220
1210
  * @param {string} [oContext.application] Name of the application (default: "SAP UI5")
1221
- * @param {string} [oContext.version] Application version (default: "1.131.1")
1211
+ * @param {string} [oContext.version] Application version (default: "1.133.0")
1222
1212
  * @param {string} [oContext.title] Title that will be written to the file (NOT the filename)
1223
1213
  * @param {string} [oContext.modifiedBy] Optional user context that will be written to the file
1224
1214
  * @param {string} [oContext.sheetName] Name of the data sheet - Maximum length of 31 characters
@@ -22,11 +22,13 @@ sap.ui.define([
22
22
  const EdmType = Library.EdmType;
23
23
  const Status = Library.Status;
24
24
 
25
+ const MIME_TYPE = "application/pdf";
26
+
25
27
  /**
26
28
  * @class The <code>sap.ui.export.PortableDocument</code> class allows you to export table data from a UI5 application to a Portable Document Format (*.PDF) file.
27
29
  *
28
30
  * @author SAP SE
29
- * @version 1.131.1
31
+ * @version 1.133.0
30
32
  *
31
33
  * @since 1.96
32
34
  * @alias sap.ui.export.PortableDocument
@@ -130,9 +132,11 @@ sap.ui.define([
130
132
  type: "odata",
131
133
  version: bV4ODataModel ? 4 : 2,
132
134
  dataUrl: oDataUrl.toString(),
133
- serviceUrl: this._resolveServiceUrl(sServiceUrl),
135
+ commonServiceUrl: this._resolveCommonServiceUrl(sServiceUrl),
136
+ serviceUrl: PortableDocument.harmonizeUrl(sServiceUrl),
134
137
  headers: bV4ODataModel ? oModel.getHttpHeaders(true) : oModel.getHeaders(),
135
- count: ExportUtils.getCountFromBinding(oBinding)
138
+ count: ExportUtils.getCountFromBinding(oBinding),
139
+ useBatch: bV4ODataModel || oModel.bUseBatch
136
140
  };
137
141
  }
138
142
 
@@ -149,10 +153,8 @@ sap.ui.define([
149
153
  *
150
154
  * @private
151
155
  */
152
- PortableDocument.prototype._resolveServiceUrl = function(sCurrentServiceUrl) {
153
- if (!sCurrentServiceUrl.endsWith("/")) {
154
- sCurrentServiceUrl += "/";
155
- }
156
+ PortableDocument.prototype._resolveCommonServiceUrl = function(sCurrentServiceUrl) {
157
+ sCurrentServiceUrl = PortableDocument.harmonizeUrl(sCurrentServiceUrl);
156
158
 
157
159
  const isRelative = /^[\./]/.test(sCurrentServiceUrl);
158
160
  let sReference = this._mCapabilities.DocumentDescriptionReference;
@@ -241,7 +243,7 @@ sap.ui.define([
241
243
  if (this._mCapabilities.FitToPage) {
242
244
  oDocumentDescription.Format.FitToPage = {
243
245
  IsEnabled: mSettings.fitToPage,
244
- MinimumFontSize: 4
246
+ MinimumFontSize: 1
245
247
  };
246
248
  }
247
249
 
@@ -284,12 +286,14 @@ sap.ui.define([
284
286
  }
285
287
  }
286
288
 
289
+ /* FileShare */
287
290
  if (this._mCapabilities.UploadToFileShare && this._mCloudFileInfo) {
288
291
  oDocumentDescription.FileName = this._mCloudFileInfo.FileShareItemName;
289
292
  oDocumentDescription.FileShare = {
290
293
  Repository: this._mCloudFileInfo.FileShare,
291
294
  Folder: this._mCloudFileInfo.ParentFileShareItem
292
295
  };
296
+ mSettings.dataSource.headers["SAP-Upload-To-File-Share"] = true;
293
297
  }
294
298
 
295
299
  /* Eliminate duplicate or unknown columns before adding them to the DocumentDescription */
@@ -360,7 +364,7 @@ sap.ui.define([
360
364
  const iVersion = oDataSource.version || 2;
361
365
 
362
366
  return iVersion === 4 ? new ODataModel({
363
- serviceUrl: oDataSource.serviceUrl
367
+ serviceUrl: oDataSource.commonServiceUrl
364
368
  }) : this._oModel;
365
369
  };
366
370
 
@@ -481,40 +485,26 @@ sap.ui.define([
481
485
  const oModel = this._getModel(oDataSource);
482
486
  const sPath = "/" + this._getEntitySetName(oDataSource);
483
487
 
484
- if (!oModel || !oModel.isA(["sap.ui.model.odata.v4.ODataModel", "sap.ui.model.odata.v2.ODataModel"])) {
485
- return Promise.reject("Unsupported Model");
488
+ if (!oModel?.isA(["sap.ui.model.odata.v4.ODataModel", "sap.ui.model.odata.v2.ODataModel"])) {
489
+ throw new Error("Unsupported Model");
486
490
  }
487
491
 
488
- return new Promise((fnResolve, fnReject) => {
489
-
490
- if (oModel.isA("sap.ui.model.odata.v4.ODataModel")) {
491
- const oBinding = oModel.bindList(sPath);
492
-
493
- oBinding.attachCreateCompleted((oEvent) => {
494
- if (oEvent.getParameter("success")) {
495
- fnResolve(oEvent.getParameter("context").getObject()["Id"]);
496
- } else {
497
- fnReject();
498
- }
499
- });
500
-
501
- oBinding.create(oDocumentDescription);
502
- } else {
503
- const bUseBatch = oModel.bUseBatch;
492
+ if (oModel.isA("sap.ui.model.odata.v4.ODataModel")) {
493
+ const oBinding = oModel.bindList(sPath);
494
+ const oContext = oBinding.create(oDocumentDescription);
504
495
 
505
- oModel.setUseBatch(false);
496
+ return oContext.created().then(() => oContext.getObject()["Id"]);
497
+ } else {
498
+ return new Promise((fnResolve, fnReject) => {
506
499
  oModel.create(sPath, oDocumentDescription, {
500
+ groupId: "documentDescription",
507
501
  success: (oData) => {
508
- oModel.setUseBatch(bUseBatch);
509
502
  fnResolve(oData["Id"]);
510
503
  },
511
- error: (oError) => {
512
- oModel.setUseBatch(bUseBatch);
513
- fnReject(oError);
514
- }
504
+ error: fnReject
515
505
  });
516
- }
517
- });
506
+ });
507
+ }
518
508
  };
519
509
 
520
510
  /**
@@ -551,9 +541,9 @@ sap.ui.define([
551
541
  this._request = new AbortController();
552
542
 
553
543
  const sDocumentDescriptionId = await this.postDocumentDescription(oDocumentDescription, mSettings.dataSource);
554
- const response = await this.sendRequest(mSettings.dataSource.dataUrl, sDocumentDescriptionId);
544
+ const oPDFBlob = await this.sendRequest(mSettings.dataSource, sDocumentDescriptionId);
555
545
 
556
- ExportUtils.saveAsFile(response, mSettings.fileName);
546
+ ExportUtils.saveAsFile(oPDFBlob, mSettings.fileName);
557
547
  ExportUtils.announceExportStatus(Status.FINISHED, { assertive: true });
558
548
  } catch (oError) {
559
549
  PortableDocument.showErrorMessage(oError);
@@ -565,30 +555,31 @@ sap.ui.define([
565
555
  /**
566
556
  * Requests the generated PDF via HTTP GET from the OData service.
567
557
  *
568
- * @param {string} sUrl Absolute data URL of the OData entity that should be exported as PDF
558
+ * @param {object} oDataSource DataSource settings of the export configuration
559
+ * @param {string} oDataSource.dataUrl Absolute data URL of the OData entity that should be exported as PDF
569
560
  * @param {string} sDocumentDescriptionId GUID of the DocumentDescription that should be used for creating the PDF
570
561
  * @returns {Promise} A Promise that gets resolved after the XHR request
571
562
  *
572
563
  * @private
573
564
  */
574
- PortableDocument.prototype.sendRequest = async function(sUrl, sDocumentDescriptionId) {
565
+ PortableDocument.prototype.sendRequest = async function(oDataSource, sDocumentDescriptionId) {
575
566
  if (this._request?.signal.aborted) {
576
567
  throw null; // Explicitly reject the Promise without an error to indicate prior user cancellation
577
568
  }
578
569
 
579
- sUrl = this._applyResultSize(sUrl);
570
+ oDataSource.dataUrl = this._applyResultSize(oDataSource.dataUrl);
571
+
572
+ const oRequest = oDataSource.useBatch ? PortableDocument.createBatchRequest(oDataSource, sDocumentDescriptionId, this._request) : PortableDocument.createGetRequest(oDataSource, sDocumentDescriptionId, this._request);
580
573
 
581
574
  try {
582
- const response = await fetch(sUrl, {
583
- signal: this._request?.signal,
584
- headers: {
585
- "Accept": this.getMimeType(),
586
- "SAP-Document-Description-Id": sDocumentDescriptionId
587
- }
588
- });
575
+ let response = await fetch(oRequest);
589
576
 
590
- if (response.redirected && response.url !== sUrl) {
591
- openWindow(response.url, "_blank");
577
+ if (oDataSource.useBatch) {
578
+ response = await PortableDocument.getBatchResponse(response);
579
+ }
580
+
581
+ if (response.status === 301 && response.headers.has("Location")) {
582
+ openWindow(response.headers.get("Location"), "_blank");
592
583
  return undefined;
593
584
  }
594
585
 
@@ -606,6 +597,264 @@ sap.ui.define([
606
597
  }
607
598
  };
608
599
 
600
+ /**
601
+ * Ensures that the given URL ends with a forward slash.
602
+ *
603
+ * @param {string} sUrl URL that is harmonized
604
+ *
605
+ * @returns {string} URL that ends with a forward slash
606
+ * @static
607
+ * @private
608
+ */
609
+ PortableDocument.harmonizeUrl = function(sUrl) {
610
+ return sUrl.endsWith("/") ? sUrl : sUrl + "/";
611
+ };
612
+
613
+ /**
614
+ * Creates <code>Request</code> with method GET for the given <code>dataSource</code> and <code>SAP-Document-Description-Id</code>.
615
+ *
616
+ * @param {object} oDataSource <code>DataSource</code> settings of the export configuration
617
+ * @param {string} sDocumentDescriptionId GUID of the <code>DocumentDescription</code> that is used for creating the PDF
618
+ * @param {AbortController} oAbortController <code>AbortController</code> instance that is used to cancel the request
619
+ *
620
+ * @returns {Request} Request object that is used to fetch the PDF document
621
+ * @static
622
+ * @private
623
+ */
624
+ PortableDocument.createGetRequest = function(oDataSource, sDocumentDescriptionId, oAbortController) {
625
+ const oHeaders = new Headers(oDataSource.headers);
626
+
627
+ oHeaders.set("Accept", MIME_TYPE);
628
+ oHeaders.set("SAP-Document-Description-Id", sDocumentDescriptionId);
629
+
630
+ return new Request(oDataSource.dataUrl, {
631
+ signal: oAbortController.signal,
632
+ headers: oHeaders
633
+ });
634
+ };
635
+
636
+ /**
637
+ * Creates a $batch request with a single GET request for the given <code>dataSource</code> and <code>SAP-Document-Description-Id</code>.
638
+ *
639
+ * @param {object} oDataSource DataSource settings of the export configuration
640
+ * @param {string} sDocumentDescriptionId GUID of the DocumentDescription that is used for creating the PDF
641
+ * @param {AbortController} oAbortController AbortController instance that is used to cancel the request
642
+ *
643
+ * @returns {Request} Request object that is used to fetch the PDF document
644
+ * @static
645
+ * @private
646
+ */
647
+ PortableDocument.createBatchRequest = function(oDataSource, sDocumentDescriptionId, oAbortController) {
648
+ const sUrl = oDataSource.dataUrl.split(oDataSource.serviceUrl)[1];
649
+ const sBoundary = "batch_" + PortableDocument._createGuid();
650
+ const oHeaders = new Headers(oDataSource.headers);
651
+
652
+ /* Header adjustments for inner request */
653
+ oHeaders.set("Accept", MIME_TYPE);
654
+ oHeaders.set("SAP-Document-Description-Id", sDocumentDescriptionId);
655
+
656
+ const sBody = PortableDocument.createRequestBody(sUrl, sBoundary, oHeaders);
657
+
658
+ /* Header adjustments for outer request */
659
+ oHeaders.set("Accept", "multipart/mixed");
660
+ oHeaders.set("Content-Type", "multipart/mixed;boundary=" + sBoundary);
661
+ oHeaders.delete("SAP-Document-Description-Id");
662
+ oHeaders.delete("SAP-Upload-To-File-Share");
663
+
664
+ return new Request(oDataSource.serviceUrl + "$batch", {
665
+ body: sBody,
666
+ cache: "no-store",
667
+ headers: oHeaders,
668
+ method: "POST",
669
+ signal: oAbortController.signal
670
+ });
671
+ };
672
+
673
+ /**
674
+ * Creates the request body for a $batch request.
675
+ *
676
+ * @param {string} sUrl The URL that is requested
677
+ * @param {string} sBoundary The boundary id for the inner request
678
+ * @param {Headers} oHeaders The headers that are sent with the request
679
+ *
680
+ * @returns {string} The request body
681
+ * @static
682
+ * @private
683
+ */
684
+ PortableDocument.createRequestBody = function(sUrl, sBoundary, oHeaders) {
685
+ const aBody = [];
686
+
687
+ aBody.push("--" + sBoundary);
688
+ aBody.push("Content-Type: application/http");
689
+ aBody.push("Content-Transfer-Encoding: binary");
690
+ aBody.push("");
691
+ aBody.push(`GET ${sUrl} HTTP/1.1`);
692
+
693
+ /* Set header information */
694
+ for (const [sKey, sValue] of oHeaders.entries()) {
695
+ aBody.push(sKey + ":" + sValue);
696
+ }
697
+
698
+ aBody.push("");
699
+ aBody.push("");
700
+ aBody.push("--" + sBoundary + "--");
701
+ aBody.push("");
702
+
703
+ return aBody.join("\r\n");
704
+ };
705
+
706
+ /**
707
+ * Unwraps the $batch response and returns a <code>Response</code> object
708
+ * corresponding to the inner GET request.
709
+ *
710
+ * @param {Response} oResponse The <code>Response</code> of the $batch request
711
+ *
712
+ * @returns {Promise<Response>} A <code>Promise</code> that resolves with the <code>Response</code> of the inner GET request
713
+ * @async
714
+ * @static
715
+ * @private
716
+ */
717
+ PortableDocument.getBatchResponse = async function(oResponse) {
718
+ if (!oResponse.ok) {
719
+ // $batch response cannot be unwrapped when the outer request failed
720
+ return oResponse;
721
+ }
722
+
723
+ const oBuffer = await oResponse.arrayBuffer();
724
+ const oUint8 = new Uint8Array(oBuffer);
725
+
726
+ const {status, statusText, headers, pdfContent} = PortableDocument.parseResponseBody(oUint8);
727
+
728
+ return new Response(pdfContent, {
729
+ status: status,
730
+ statusText: statusText,
731
+ headers: headers
732
+ });
733
+ };
734
+
735
+ /**
736
+ * Detects the start index of the PDF content in the binary response.
737
+ * The start boundary is "%PDF-". If the response contains multiple PDFs,
738
+ * the first one is used.
739
+ *
740
+ * @param {Uint8Array} oTypedArray The binary data of the response
741
+ *
742
+ * @returns {number} The start index of the PDF content. If no PDF content is found, -1 is returned.
743
+ * @static
744
+ * @private
745
+ */
746
+ PortableDocument.getStartIndex = function(oTypedArray) {
747
+ return oTypedArray.findIndex((element, index) => {
748
+ const sStartBoundary = "%PDF-";
749
+
750
+ return element === sStartBoundary.charCodeAt(0)
751
+ && oTypedArray[index + 1] === sStartBoundary.charCodeAt(1)
752
+ && oTypedArray[index + 2] === sStartBoundary.charCodeAt(2)
753
+ && oTypedArray[index + 3] === sStartBoundary.charCodeAt(3)
754
+ && oTypedArray[index + 4] === sStartBoundary.charCodeAt(4);
755
+ });
756
+ };
757
+
758
+ /**
759
+ * Detects the end index of the PDF content in the binary response.
760
+ * The end boundary is "%%EOF". If the response contains multiple PDFs,
761
+ * the last one is used.
762
+ *
763
+ * @param {Uint8Array} oTypedArray The binary data of the response
764
+ *
765
+ * @returns {number} The start index of the PDF content. If no PDF content is found, -1 is returned.
766
+ * @static
767
+ * @private
768
+ */
769
+ PortableDocument.getEndIndex = function(oTypedArray) {
770
+ return oTypedArray.findLastIndex((element, index) => {
771
+ const sEndBoundary = "%%EOF";
772
+
773
+ return element === sEndBoundary.charCodeAt(4)
774
+ && oTypedArray[index - 1] === sEndBoundary.charCodeAt(3)
775
+ && oTypedArray[index - 2] === sEndBoundary.charCodeAt(2)
776
+ && oTypedArray[index - 3] === sEndBoundary.charCodeAt(1)
777
+ && oTypedArray[index - 4] === sEndBoundary.charCodeAt(0);
778
+ });
779
+ };
780
+
781
+ /**
782
+ * Parses the binary response of the inner request. It identifies the PDF content
783
+ * by its field boundaries %PDF- and %%EOF. The response status and its headers are
784
+ * evaluated as well.
785
+ *
786
+ * @param {Uint8Array} oTypedArray The binary response of the inner request
787
+ * @returns {object} An object containing the <code>status</code>, <code>statusText</code>, <code>headers</code>, and the PDF content
788
+ * @static
789
+ * @private
790
+ */
791
+ PortableDocument.parseResponseBody = function(oTypedArray) {
792
+ let oPDFContent;
793
+ const iPDFStartIndex = PortableDocument.getStartIndex(oTypedArray);
794
+ const iPDFEndIndex = PortableDocument.getEndIndex(oTypedArray);
795
+
796
+ if (iPDFStartIndex !== -1 && iPDFEndIndex !== -1) {
797
+ // Increase end index by one, since subarray does not include the second index
798
+ oPDFContent = oTypedArray.subarray(iPDFStartIndex, iPDFEndIndex + 1);
799
+ }
800
+
801
+ /*
802
+ * If iPDFStartIndex is -1, the responseText is missing the last character
803
+ * of the response which can be ignored because it is either a line break
804
+ * or the trailing "-" of the batch boundary.
805
+ */
806
+ const sResponseText = new TextDecoder().decode(oTypedArray.subarray(0, iPDFStartIndex));
807
+ const aLines = sResponseText.split("\r\n");
808
+
809
+ // Remove all lines prior to HTTP status
810
+ aLines.splice(0, aLines.findIndex((sLine) => /^HTTP\/1\.[0|1] ([1-9][0-9]{2})/.test(sLine)));
811
+
812
+ const [, iStatusCode, sStatusText] = aLines[0].match(/^HTTP\/1\.[0|1] ([1-9][0-9]{2}) ?([\w ]*)$/);
813
+ const reHeaders = /^([\w\-]+): ?(.+)$/;
814
+ const oHeaders = aLines
815
+ .filter((sLine) => reHeaders.test(sLine))
816
+ .reduce((oAccumulator, sLine) => {
817
+ const [, sKey, sValue] = sLine.match(reHeaders);
818
+
819
+ oAccumulator.set(sKey, sValue);
820
+
821
+ return oAccumulator;
822
+ }, new Headers());
823
+
824
+ return {
825
+ status: iStatusCode,
826
+ statusText: sStatusText,
827
+ headers: oHeaders,
828
+ pdfContent: oPDFContent
829
+ };
830
+ };
831
+
832
+ /**
833
+ * Creates a pseudo random GUID. This algorithm is not suitable for
834
+ * cryptographic purposes and should not be used for such.
835
+ *
836
+ * *** IMPORTANT ***
837
+ * This is a fallback solution due to missing crypto features in
838
+ * headless chrome that is used for the UI5 voter.
839
+ *
840
+ * @returns {string} Generated GUID
841
+ *
842
+ * @static
843
+ * @private
844
+ */
845
+ PortableDocument._createGuid = function() {
846
+ if (globalThis.crypto?.randomUUID) {
847
+ return globalThis.crypto.randomUUID();
848
+ }
849
+
850
+ return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c) {
851
+ const r = Math.random() * 16 | 0, // Bitwise OR is equivalent to Math.floor() but faster
852
+ v = c === "x" ? r : ((r & 0x3) | 0x8); // In case of c != "x", the value is always between 0x8 and 0xB
853
+
854
+ return v.toString(16);
855
+ });
856
+ };
857
+
609
858
  /**
610
859
  * Returns the specific MIME type
611
860
  *
@@ -615,7 +864,7 @@ sap.ui.define([
615
864
  * @public
616
865
  */
617
866
  PortableDocument.prototype.getMimeType = function() {
618
- return "application/pdf";
867
+ return MIME_TYPE;
619
868
  };
620
869
 
621
870
  /**
@@ -90,7 +90,7 @@ sap.ui.define([
90
90
  * <li><code>workbook.context</code> - Context object that will be applied to the generated file. It may contain the following fields:</li>
91
91
  * <ul>
92
92
  * <li><code>application</code> (string) - The application that creates the XLSX document (default: "SAP UI5")</li>
93
- * <li><code>version</code> (string) - Application version that creates the XLSX document (default: "1.131.1")</li>
93
+ * <li><code>version</code> (string) - Application version that creates the XLSX document (default: "1.133.0")</li>
94
94
  * <li><code>title</code> (string) - Title of the XLSX document (NOT the filename)</li>
95
95
  * <li><code>modifiedBy</code> (string) - User context for the XLSX document</li>
96
96
  * <li><code>sheetName</code> (string) - The label of the data sheet</li>
@@ -174,7 +174,7 @@ sap.ui.define([
174
174
  * columns: aColumns,
175
175
  * context: {
176
176
  * application: 'Debug Test Application',
177
- * version: '1.131.1',
177
+ * version: '1.133.0',
178
178
  * title: 'Some random title',
179
179
  * modifiedBy: 'John Doe',
180
180
  * metaSheetName: 'Custom metadata',
@@ -286,7 +286,7 @@ sap.ui.define([
286
286
  * @class The <code>sap.ui.export.Spreadsheet</code> class allows you to export table data from a UI5 application to a spreadsheet file.
287
287
  *
288
288
  * @author SAP SE
289
- * @version 1.131.1
289
+ * @version 1.133.0
290
290
  *
291
291
  * @since 1.50
292
292
  * @alias sap.ui.export.Spreadsheet
@@ -21,7 +21,7 @@ sap.ui.define(['sap/base/Log', 'sap/ui/export/ExportUtils'], function(Log, Expor
21
21
  * Utility class to perform spreadsheet export.
22
22
  *
23
23
  * @author SAP SE
24
- * @version 1.131.1
24
+ * @version 1.133.0
25
25
  *
26
26
  * @alias sap.ui.export.SpreadsheetExport
27
27
  * @private
@@ -15,12 +15,13 @@ sap.ui.define(["sap/ui/core/Lib"], function(Library) {
15
15
  * @namespace
16
16
  * @alias sap.ui.export
17
17
  * @author SAP SE
18
- * @version 1.131.1
18
+ * @version 1.133.0
19
19
  * @public
20
20
  */
21
21
 
22
22
  var thisLib = Library.init({
23
23
  name: "sap.ui.export",
24
+ apiVersion: 2,
24
25
  dependencies: [
25
26
  "sap.ui.core"
26
27
  ],
@@ -33,7 +34,7 @@ sap.ui.define(["sap/ui/core/Lib"], function(Library) {
33
34
  interfaces: [],
34
35
  controls: [],
35
36
  elements: [],
36
- version: "1.131.1"
37
+ version: "1.133.0"
37
38
  });
38
39
 
39
40
  /**
@@ -2,210 +2,210 @@
2
2
  #
3
3
 
4
4
  #XBUT: Cancel button in the dialog
5
- CANCEL_BUTTON=modg2pjCAa6BEYkgDYNXug_Cancel
5
+ CANCEL_BUTTON=YwUYV0m5UYXVf4mAPhuFUg_Cancel
6
6
 
7
7
  #XBUT: Close button in the dialog
8
- CLOSE_BUTTON=ZbC/6w17jWRu6abQaX4c/w_Close
8
+ CLOSE_BUTTON=DtDbM0qfCPy0b0HLRo/MFw_Close
9
9
 
10
10
  #XBUT: Export button in the dialog. The meaning is: "Continue" but the first character should not be the same as by "Cancel"
11
- EXPORT_BUTTON=yBhP4D/r4zd/jZayl+h/4A_Export
11
+ EXPORT_BUTTON=1GFovRDurTo8mdImgEZ7AA_Export
12
12
 
13
13
  #XHED: Default title text for the export progress dialog
14
- PROGRESS_TITLE=+MYrZ9z0peGB0+hJ1LtcPQ_Export Document
14
+ PROGRESS_TITLE=z6s+6RHsfjJYRXsAs7o8kA_Export Document
15
15
 
16
16
  #XHED: Default title text for the export warning dialog
17
- WARNING_TITLE=Nf3w7J/XqjLgmweSrrTtRQ_Warning
17
+ WARNING_TITLE=tln/IceAO2wlEr+7JjxsHg_Warning
18
18
 
19
19
  #XMSG: Message text informing that exported data is fetched from the server
20
- PROGRESS_FETCHING_MSG=bIgiajgcYXsx9bQ8CgwFkw_Fetching data from server...
20
+ PROGRESS_FETCHING_MSG=JuOTGvCTTYHetiNrsvGQlg_Fetching data from server...
21
21
 
22
22
  #XHED: Default title text for the export progress error message box
23
- PROGRESS_ERROR_TITLE=CuOUxVZOWGV3UXu6i4aiRg_Error
23
+ PROGRESS_ERROR_TITLE=/icUiVj9VkY0+7f8nCrihg_Error
24
24
 
25
25
  #XMSG: Message text informing that the exported file is too big
26
- MSG_WARNING_CELL_COUNT=DzQdxb4eQW9xV+uK91INxA_The document contains {0} rows and {1} column(s) ({2} cells).
26
+ MSG_WARNING_CELL_COUNT=kzTfUqOedSjSJA5zwxAl8Q_The document contains {0} rows and {1} column(s) ({2} cells).
27
27
 
28
28
  #XMSG: Part of a message text that informs about the file specific cell limit for exporting
29
- MSG_WARNING_CELL_LIMIT=rEh08Pgti7TZZ55VpTYiwg_Documents with more than {0} cells might be too large to process.
29
+ MSG_WARNING_CELL_LIMIT=q7f8PK9Sb/HkNkZAUPufHw_Documents with more than {0} cells might be too large to process.
30
30
 
31
31
  #XMSG: Part of a message text that informs about the number of rows which will be exported
32
- MSG_WARNING_ROW_COUNT=zjostxh4VuP2T3zfYq+92Q_The document contains {0} rows.
32
+ MSG_WARNING_ROW_COUNT=+052siKWYWaEqhr4IKFavg_The document contains {0} rows.
33
33
 
34
34
  #XMSG: Part of a message text that contains information about the file specific export limit - Placeholder 1 references the limit and placeholder 2 references the file type
35
- MSG_WARNING_ROW_LIMIT=X3TEzKoOOwyL89X8/2RQkg_Only {0} rows can be exported in a single {1} file.
35
+ MSG_WARNING_ROW_LIMIT=R1G/nLGpCzqFySgFRfRuLw_Only {0} rows can be exported in a single {1} file.
36
36
 
37
37
  #XMSG: Part of a message text that will be used when the number of rows is unknown
38
- MSG_WARNING_COUNT_UNKNOWN=yQKqiAEoeTY3OeboaJM3UQ_The document contains an unknown number of rows.
38
+ MSG_WARNING_COUNT_UNKNOWN=XkZxNQlyIeEEX8Nsje3ToA_The document contains an unknown number of rows.
39
39
 
40
40
  #XMSG: Part of a message text that gives advice on how to proceed
41
- MSG_WARNING_ADVICE=QOcXT7t9JjWQoLtku5ZuKg_Please do not proceed unless you are sure that the current filter settings will not result in a large amount of data, as the file might be too large to process.
41
+ MSG_WARNING_ADVICE=ZKs4zzv0hHvKlWMrUexZsg_Please do not proceed unless you are sure that the current filter settings will not result in a large amount of data, as the file might be too large to process.
42
42
 
43
43
  #XMSG: Last sentence of a warning message to ask the user if he/she still wants to export
44
- MSG_WARNING_EXPORT_ANYWAY=6GBV7qNOqjF5ACqz3qiFWA_Export anyway?
44
+ MSG_WARNING_EXPORT_ANYWAY=vm4mpaxCoV+oQkKmInbPUw_Export anyway?
45
45
 
46
46
  #XMSG: Textual representation of the technical error message which indicates that the export ran out of memory.
47
- MSG_ERROR_OUT_OF_MEMORY=VNHyrddvN5WSk6qtKVMTCQ_The export process ran out of memory and was terminated.\nPlease adjust your column or filter settings to select a smaller number of cells.
47
+ MSG_ERROR_OUT_OF_MEMORY=XPxkNRxIaADaOyB9f2cM3Q_The export process ran out of memory and was terminated.\nPlease adjust your column or filter settings to select a smaller number of cells.
48
48
 
49
49
  #XMSG: Screenreader announcement that the export process has been finished.
50
- MSG_INFO_EXPORT_FINISHED=c9y6Oqn7R13YJMtkiuy41A_The export is finished, and the file has been downloaded.
50
+ MSG_INFO_EXPORT_FINISHED=4IMF3rBoasbIsxcopgi3Iw_The export is finished, and the file has been downloaded.
51
51
 
52
52
  #XMSG: Screenreader announcement that the export is being updated.
53
- MSG_INFO_EXPORT_UPDATE=wnQFry6uAjC4wv/PhlzxuQ_Downloaded {0} of {1}.
53
+ MSG_INFO_EXPORT_UPDATE=ZnuOpDLJu/rQy6l5Zcp+/A_Downloaded {0} of {1}.
54
54
  #XMSG: Message text informing that the original error message is empty or no specific error provided
55
- PROGRESS_ERROR_DEFAULT=ZCp3Rpp1rXAkDwuRsjkCAA_Unknown error
55
+ PROGRESS_ERROR_DEFAULT=RVY4ydN0UBpiTpP0IkhVrQ_Unknown error
56
56
 
57
57
  #XHED: Default title text for the export settings dialog
58
- EXPORT_SETTINGS_TITLE=uRL5IaNNvo3xb9W7jii+0A_Export As
58
+ EXPORT_SETTINGS_TITLE=Rko47Bs6fM1X09a2z0mhFA_Export As
59
59
 
60
60
  #XFLD: Label for File Name input field
61
- FILE_NAME=gz8gQq3tGxN8SQD4xD6q2g_File Name
61
+ FILE_NAME=/b+fU99+wpHfbQMhUblXBw_File Name
62
62
 
63
63
  #XFLD: Label for the file format Select control
64
- SELECT_FORMAT=WVTPFq7EtK1uU+LPpbcNZg_Format
64
+ SELECT_FORMAT=yTEfOF3ZL0jWIjV4Vmkekw_Format
65
65
 
66
66
  #XFLD: Split cells with multiple values
67
- SPLIT_CELLS=N3a58XdRDYrwBK3PIxjr9A_Split cells with multiple values
67
+ SPLIT_CELLS=5PhTOIDueJCDz9CZ1Nr0zg_Split cells with multiple values
68
68
 
69
69
  #XFLD: Include filter settings
70
- INCLUDE_FILTER_SETTINGS=XE4zRMq+ItFtleuC85ranQ_Include filter settings
70
+ INCLUDE_FILTER_SETTINGS=YfoPcl78jlFMnkeuNPU9xg_Include filter settings
71
71
 
72
72
  #XFLD: Techincal Information
73
- TECHNICAL_INFORMATION=1xgZYm09iLlq1LOWIDds7A_Technical Information
73
+ TECHNICAL_INFORMATION=NRX0CJHvR3QX1GB6mXDneA_Technical Information
74
74
 
75
75
  #XFLD: User Information
76
- USER_NAME=Kh8BZ+kFMjL4m86pZLqyNg_User
76
+ USER_NAME=1zhn09C9vEbVXz7GZSvRyw_User
77
77
 
78
78
  #XFLD: Creation time
79
- CREATED_TIME=3UGAUU9wlgft1SHzePZ7BQ_Creation Time
79
+ CREATED_TIME=jPCx70EBk7l5hu0aAAzOVg_Creation Time
80
80
 
81
81
  #XFLD: Archive format
82
- ARCHIVE_FORMAT=+vVsNfrZe8IJMwO/UphqlQ_Archive Format
82
+ ARCHIVE_FORMAT=17fqAsilf/9gXQtuonCqXg_Archive Format
83
83
 
84
84
  #XHED: Header of the filter sheet
85
- FILTER_HEADER=288kZ6IVYgbXCZeErx3VAw_Filter
85
+ FILTER_HEADER=S2U3iLl/nDZulOlk+t0vsQ_Filter
86
86
 
87
87
  #XFLD: Add current date and time to the file name
88
- ADD_DATE_TIME=4ravONrqtlNbE4a7dsJAGg_Add current date and time to the file name
88
+ ADD_DATE_TIME=Rc4ePkEpji1ojkaQ2CPABw_Add current date and time to the file name
89
89
 
90
90
  #XLST: Spreadsheet file type config for Microsoft Excel specific format
91
- XLSX_FILETYPE=RzHh5y2ILjdvhrL+OGdSTA_Microsoft Excel (*.xlsx)
91
+ XLSX_FILETYPE=FSobfhAm5msNkQS5p8sufw_Microsoft Excel (*.xlsx)
92
92
 
93
93
  #XLST: Spreadsheet file type for exporting to Google Sheets
94
- GSHEET_FILETYPE=UsJfvAJYvBNoQFGgMsDQaw_Google Sheets
94
+ GSHEET_FILETYPE=P2FmGcmoMSu+Wr6TMolT/Q_Google Sheets
95
95
 
96
96
  #XMSG: File name warning text
97
- FILENAME_WARNING=TQMeuuW7D2XBhnMCUEMbxw_The file name you entered exceeds 100 characters. This may prevent the spreadsheet from opening correctly.
97
+ FILENAME_WARNING=guig/qLO9r4eVSkNWPXD2A_The file name you entered exceeds 100 characters. This may prevent the spreadsheet from opening correctly.
98
98
 
99
99
  #XFLD: Paper Size
100
- PAPER_SIZE=5vIxd89bNAk0qX0NFkCVRw_Paper Size
100
+ PAPER_SIZE=0EthKeJ/+U4R+LHuUmh99g_Paper Size
101
101
 
102
102
  #XFLD: Orientation
103
- ORIENTATION=zH4ZcaeSKxVezUY1gPK2iw_Orientation
103
+ ORIENTATION=85aJscAYAAsasxf4041nbw_Orientation
104
104
 
105
105
  #XFLD: Font Size
106
- FONT_SIZE=eR8j5QJZhf4aYZeGybhY7w_Font Size
106
+ FONT_SIZE=CUKM8wkoD6DA/clt3z1NTQ_Font Size
107
107
 
108
108
  #XLST: Paper size config for PDF export
109
- PAPER_SIZE_A4=L8PrQhSX3sVcvLBk7EX0ZQ_A4
109
+ PAPER_SIZE_A4=lMvWvwLl8e88UIbMm/JMNw_A4
110
110
 
111
111
  #XLST: Paper size config for PDF export
112
- PAPER_SIZE_US_LETTER=86sZ4MPDmWfTH7qTqApwpA_US Letter
112
+ PAPER_SIZE_US_LETTER=aNSE3L+gpZzHwd5BnAJs8w_US Letter
113
113
 
114
114
  #XLST: Orientation config for PDF export
115
- ORIENTATION_LAND=65shYh/d33u6lgH9nQ8dvQ_Landscape
115
+ ORIENTATION_LAND=bvNJw+tr2N6/y7H1vx4o3w_Landscape
116
116
 
117
117
  #XLST: Orientation config for PDF export
118
- ORIENTATION_PORT=HjcaTztdgg+x5VHf14TNnw_Portrait
118
+ ORIENTATION_PORT=V/rmRXGzNRrXDwN4gRAtjA_Portrait
119
119
 
120
120
  #XMSG: Font size error text
121
- NUMBER_ERROR=PxkwesneKhdat0Rhjn8nfA_The value should be a number.
121
+ NUMBER_ERROR=8gzJ4q0AbfufcNXW3IAG2w_The value should be a number.
122
122
 
123
123
  #XFLD: Fit to Page
124
- ENABLE_ACCESSIBILITY=jRLLnX1dx/N7acpc6dmX7w_Enable Accessibility
124
+ ENABLE_ACCESSIBILITY=gUB1dQTRiatTayXY7vYBhw_Enable Accessibility
125
125
 
126
126
  #XFLD: Enable Accessibility
127
- FITTOPAGE=CyBm+6Pv5PJCRSPAfQ2jEA_Fit to Page
127
+ FITTOPAGE=0yHDxk/pH0k7J0FgKXWGdA_Fit to Page
128
128
 
129
129
  #XFLD: Enable Signature
130
- ENABLE_SIGNATURE=YQYvHHYPWUtzQfGSlsUrsA_Enable Signature
130
+ ENABLE_SIGNATURE=54+xhHt/iRHUq0jvRUocLA_Enable Signature
131
131
 
132
132
  #XFLD: Show Pagenumber
133
- SHOW_PAGENUM=NyuI8CkSTw3JyBOsztIKPA_Show Page Number
133
+ SHOW_PAGENUM=rdjVHI+LleYdQXmKXkXdYw_Show Page Number
134
134
 
135
135
  #XFLD: Reason for the Signature
136
- SIGNATURE_REASON=JhBi2OXZW59M0ewWYaU9Ng_Reason
136
+ SIGNATURE_REASON=RtHZR0qn2PtHkzQ614Ltfg_Reason
137
137
 
138
138
  #XMSG: Message text informing that PDF is generated
139
- PDF_GENERATION_IN_PROGRESS=ykAYJafSfBVz+sOC0MkpsQ_PDF is being generated
139
+ PDF_GENERATION_IN_PROGRESS=FGv0J0c7Zr1Aoj5S4iAT1g_PDF is being generated
140
140
 
141
141
  #XMSG: Message text informing that there was an error in PDF generation.
142
- PDF_GENERATION_ERROR=ms+v9QAgRIyQPYDlXYR3tA_There was an error during the PDF export.
142
+ PDF_GENERATION_ERROR=kRlK81Eo6M+GVC7YiVyJkw_There was an error during the PDF export.
143
143
 
144
144
  #XMSG: Error text informing when PDF generation is failed
145
- PDF_GENERIC_ERROR=pU8JPHeGs8176jt0hwdmPw_Error during PDF export
145
+ PDF_GENERIC_ERROR=/beGGcPZAtpjK0IWwP5pWg_Error during PDF export
146
146
 
147
147
  #XMSG: File name error text
148
- FILENAME_ERROR=DqBn2pft9hauh/wiUX6COQ_You cannot use any of the following characters in a file name\: \\ / \: * ? " < > |
148
+ FILENAME_ERROR=NXpftBEJrBEnp4Kc6L1mfw_You cannot use any of the following characters in a file name\: \\ / \: * ? " < > |
149
149
 
150
150
  #XMSG: Message text informing that exported file is being created
151
- PROGRESS_BUNDLE_MSG=bT+4d3TOSHFoGeTfnLBoZw_Generating file...
151
+ PROGRESS_BUNDLE_MSG=VB30UbuuSsYkCpxq1DXrWA_Generating file...
152
152
 
153
153
  #XTIT: Title of the XLSX document if no title is defined in SpreadSheet settings
154
- XLSX_DEFAULT_TITLE=VymeUn4cPQ+Cx0UNpjFSOA_SAPUI5 Export
154
+ XLSX_DEFAULT_TITLE=XhRF1TeFvqbyPwk4SsDelA_SAPUI5 Export
155
155
 
156
156
  #XTIT,30: Default label of the data sheet - use less than 31 characters!
157
- XLSX_DEFAULT_SHEETNAME=SoV8OODcC1vF7d0H0Ux3/Q_SAPUI5 Export
157
+ XLSX_DEFAULT_SHEETNAME=4yJ4RlybNddEWUu5bJqdMw_SAPUI5 Export
158
158
 
159
159
  #XLST: Portable Document Format type config for PDF export
160
- PDF_FILETYPE=uupzA6khxdWTjP8EkK+fQg_Portable Document Format (*.pdf)
160
+ PDF_FILETYPE=C9b/EsHlVML4C4SaUc1DXw_Portable Document Format (*.pdf)
161
161
 
162
162
  #XMSG: Tooltip that explains the Accessibility checkbox and why it might be disabled
163
- TOOLTIP_PDF_ACCESSIBILITY=Jp6q3Cvl7vwQ1ewvr5+6uA_Defines whether the generated document is accessible.
163
+ TOOLTIP_PDF_ACCESSIBILITY=qZu0G+GVYKj4KTI+qOWIww_Defines whether the generated document is accessible.
164
164
 
165
165
  #XMSG: Tooltip that explains the show pagenumber checkbox and why it might be disabled
166
- TOOLTIP_PDF_PAGENUMBER=36FuyRRylvJv1Havgt77yg_Defines whether the generated document contains page numbers in the footer of each page.
166
+ TOOLTIP_PDF_PAGENUMBER=RpzpVD3gzgolZF8NAS8/aA_Defines whether the generated document contains page numbers in the footer of each page.
167
167
 
168
168
  #XMSG: Tooltip that explains the Signature checkbox and why it might be disabled
169
- TOOLTIP_PDF_SIGNATURE=i6rN4ki3qsPCNVcIqnyCpg_Defines whether the generated document is signed with a digital signature.
169
+ TOOLTIP_PDF_SIGNATURE=mFE1vnn1ipicJ0jLcanUiQ_Defines whether the generated document is signed with a digital signature.
170
170
 
171
171
  #XMSG: Tooltip that explains the FitToPage checkbox and why it might be disabled
172
- TOOLTIP_FITTOPAGE=pDVrk/E9mCRL0q5BaJ5inw_The generated document has content that fits the size of the page.
172
+ TOOLTIP_FITTOPAGE=MxNbZFge+lGQBz32GV3w3g_The generated document has content that fits the size of the page.
173
173
 
174
174
  #XMSG: Tooltip that explains the Archive format checkbox and why it might be disabled
175
- TOOLTIP_ARCHIVE_FORMAT=6+aEQ459y4r0URcD/Y/s2Q_The generated document conforms with PDF/A.
175
+ TOOLTIP_ARCHIVE_FORMAT=RQV9UBjNgkirqtHjq/R6kg_The generated document conforms with PDF/A.
176
176
 
177
177
  #XMSG: Tooltip that explains the filter settings checkbox and why it might be disabled
178
- TOOLTIP_FILTER_SETTINGS=XlkUlENmYQ30QPKxlxPTtw_The generated document has filter settings on the cover page.
178
+ TOOLTIP_FILTER_SETTINGS=fmEXGUkcrZB6hgpsnoWVwQ_The generated document has filter settings on the cover page.
179
179
 
180
180
  #XMSG: Tooltip that explains the font size input and why it might be disabled
181
- TOOLTIP_FONT_SIZE=qCwCOhMn9zuH60E7pMUhQQ_Defines the font size of the generated document.
181
+ TOOLTIP_FONT_SIZE=J28qchQFj18GfFZp5zHaNw_Defines the font size of the generated document.
182
182
 
183
183
  #XFLD: Label for the Destination Select control - Destination refers to the target location where the exported file should be stored and can be either Local or Remote/Cloud
184
- SELECT_DESTINATION=SzkcGiE0ZkBWg+dSEIAhlg_Destination
184
+ SELECT_DESTINATION=wYf/Da1cEZCzu+x0LgZA6g_Destination
185
185
 
186
186
  #XLST: This option indicates that the exported file will be saved on the local device
187
- DESTINATION_LOCAL=kjJ4hQVy2oT1McpsS9Wm7g_Local
187
+ DESTINATION_LOCAL=huOEpgC1yOKbDQOb79f14g_Local
188
188
 
189
189
  #XLST: This option indicates that the exported file will be saved on a remote or cloud file share
190
- DESTINATION_REMOTE=hQK2mrcJOYg603D9DGY9hw_Cloud
190
+ DESTINATION_REMOTE=kEU59kompfmyB3iNVZWPAQ_Cloud
191
191
 
192
192
  #XHED: Dialog header for the CloudFilePicker
193
- DESTINATION_DIALOG_TITLE=7qhTJKQ/js5u4whgT/yVBw_Export To
193
+ DESTINATION_DIALOG_TITLE=Negu5jW/JbSj+NoRv5yKSg_Export To
194
194
 
195
195
  #XMSG: Status text on the progress dialog for transfering the file to the cloud destination
196
- DESTINATION_DIALOG_STATUS=ld7xwLgd+Vc3XY3I7yiI9A_File is being transferred - please be patient...
196
+ DESTINATION_DIALOG_STATUS=zVuuBNM2Ug637WJSpQnmxg_File is being transferred - please be patient...
197
197
 
198
198
  #XMSG: Error message when exported file could not be transferred
199
- DESTINATION_TRANSFER_ERROR=8rVdaoN9gIvWAGOTc9+G4g_File could not be transferred.
199
+ DESTINATION_TRANSFER_ERROR=b9DgbnLIyny/iu4WYtIdFw_File could not be transferred.
200
200
 
201
201
  #XMSG: Succuess message when the file has been saved to the cloud destination
202
- DESTINATION_TRANSFER_SUCCESS=Fk5RrfczJCnwIA9cNFkZEg_Your file has been saved successfully.
202
+ DESTINATION_TRANSFER_SUCCESS=8Quo+cOiScYDSyfuCBUQkA_Your file has been saved successfully.
203
203
 
204
204
  #XMSG: Error message when the user did not select a proper FileShare for storing the file
205
- DESTINATION_SELECTION_INCOMPLETE=FUsmrZqBYBt8Ev8PQnn/ZA_The selected file share is invalid.
205
+ DESTINATION_SELECTION_INCOMPLETE=oqtFsKuTTxKUlZYAStBBCA_The selected file share is invalid.
206
206
 
207
207
  #XBUT: Export button in the dialog when the user has selected to save the file on a cloud destination. This will open another file/folder selection. The text is followed by an ellipsis
208
- DIALOG_BUTTON_CLOUD_DESTINATION=5U+q1o74ATIHwLzNyJsXPg_Export To...
208
+ DIALOG_BUTTON_CLOUD_DESTINATION=QY7oROd7giPdcSOonEX3CA_Export To...
209
209
 
210
210
  #XMSG: Error message that is shown when the user has selected Google Sheets as format but the selected file location is on a FileShare that has a vendor different than Google
211
- DESTINATION_ERROR_NOT_GOOGLE=IjDS6EI/w53OLbJp7RIiNA_Exporting a file to Google Sheets requires a Google Workspace as a file share.\nPlease select a different file format or a different file share.
211
+ DESTINATION_ERROR_NOT_GOOGLE=fYcGa0+UJU95VKxz7VFimg_Exporting a file to Google Sheets requires a Google Workspace as a file share.\nPlease select a different file format or a different file share.
@@ -24,7 +24,7 @@
24
24
  * @param {object} mSettings Data service related part of the export configuration
25
25
  *
26
26
  * @author SAP SE
27
- * @version 1.131.1
27
+ * @version 1.133.0
28
28
  *
29
29
  * @constructor
30
30
  * @class DataProviderBase
@@ -20,7 +20,7 @@ sap.ui.define(['sap/ui/base/Object'], function(BaseObject) {
20
20
  * convenience functions like <code>sap.ui.export.util.Filter#setType</code> to improve the result.
21
21
  *
22
22
  * @author SAP SE
23
- * @version 1.131.1
23
+ * @version 1.133.0
24
24
  *
25
25
  * @since 1.110
26
26
  * @alias sap.ui.export.util.Filter