From bf4ae17c422ad62f636f5eed3836a1879fae727d Mon Sep 17 00:00:00 2001 From: Mykola Paramonov Date: Thu, 22 Jan 2026 15:52:38 +0100 Subject: [PATCH 1/2] feat(nanoflow-actions-native): add download web bile nanoflow action --- .../nanoflow-actions-native/CHANGELOG.md | 10 +++++ .../src/client/DownloadWebFile.ts | 37 +++++++++++++++++++ .../nanoflow-actions-native/typings/mx.d.ts | 5 +++ 3 files changed, 52 insertions(+) create mode 100644 packages/jsActions/nanoflow-actions-native/src/client/DownloadWebFile.ts diff --git a/packages/jsActions/nanoflow-actions-native/CHANGELOG.md b/packages/jsActions/nanoflow-actions-native/CHANGELOG.md index 69cc94518..9e79b39a2 100644 --- a/packages/jsActions/nanoflow-actions-native/CHANGELOG.md +++ b/packages/jsActions/nanoflow-actions-native/CHANGELOG.md @@ -6,6 +6,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] +## [6.2.0] Nanoflow Commons - 2026-01-22 + +### Added + +- Added a "Download web file" nanoflow action that triggers file download for web applications. + +### Changed + +- Changed a caption for the existing "Download file" action to "Download native file". + ## [6.1.1] Nanoflow Commons - 2025-10-7 ### Fixed diff --git a/packages/jsActions/nanoflow-actions-native/src/client/DownloadWebFile.ts b/packages/jsActions/nanoflow-actions-native/src/client/DownloadWebFile.ts new file mode 100644 index 000000000..351eda5ca --- /dev/null +++ b/packages/jsActions/nanoflow-actions-native/src/client/DownloadWebFile.ts @@ -0,0 +1,37 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * @param {MxObject} file - File object which will be downloaded. + * @param {boolean} showFileInBrowser - Set to True to let the browser open the file in a new tab. + * Set to False if the file only needs to be downloaded to the device storage. + * @returns {Promise.} + */ +export async function DownloadWebFile(file?: mendix.lib.MxObject, showFileInBrowser?: boolean) { + // BEGIN USER CODE + if (!file) { + return Promise.reject(new Error("Input parameter 'file' is required")); + } + + const target = showFileInBrowser ? "window" : "internal"; + + return new Promise((resolve, reject) => { + mx.ui + .downloadFile({ + mxobject: file, + target, + error: (err: Error) => reject(err) + }) + .then(resolve) + .catch(reject); + }); + // END USER CODE +} diff --git a/packages/jsActions/nanoflow-actions-native/typings/mx.d.ts b/packages/jsActions/nanoflow-actions-native/typings/mx.d.ts index 3b4f6acf8..06628a147 100644 --- a/packages/jsActions/nanoflow-actions-native/typings/mx.d.ts +++ b/packages/jsActions/nanoflow-actions-native/typings/mx.d.ts @@ -2,6 +2,11 @@ declare namespace mx { interface ui { toggleSidebar: () => void; + downloadFile: (args: { + mxobject: mendix.lib.MxObject; + target: "window" | "internal"; + error?: (err: Error) => void; + }) => Promise; } interface data { update: (param: { guid?: string | undefined; entity?: string | undefined; callback?: () => void }) => void; From 1c9bf1933c415b881842ff4c648fd8193aa15a59 Mon Sep 17 00:00:00 2001 From: Mykola Paramonov Date: Fri, 23 Jan 2026 13:31:20 +0100 Subject: [PATCH 2/2] fix(nanoflow-actions-native): add a return type to the download web file action --- .../nanoflow-actions-native/src/client/DownloadWebFile.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/jsActions/nanoflow-actions-native/src/client/DownloadWebFile.ts b/packages/jsActions/nanoflow-actions-native/src/client/DownloadWebFile.ts index 351eda5ca..c6dcef98c 100644 --- a/packages/jsActions/nanoflow-actions-native/src/client/DownloadWebFile.ts +++ b/packages/jsActions/nanoflow-actions-native/src/client/DownloadWebFile.ts @@ -15,7 +15,7 @@ * Set to False if the file only needs to be downloaded to the device storage. * @returns {Promise.} */ -export async function DownloadWebFile(file?: mendix.lib.MxObject, showFileInBrowser?: boolean) { +export async function DownloadWebFile(file?: mendix.lib.MxObject, showFileInBrowser?: boolean): Promise { // BEGIN USER CODE if (!file) { return Promise.reject(new Error("Input parameter 'file' is required"));