Skip to content

Commit 8a311bb

Browse files
r-farkhutdinovRuslan Farkhutdinov
andauthored
FileUploader: Trigger native click event on input to show system upload dialog (T1307271) (#31090)
Co-authored-by: Ruslan Farkhutdinov <[email protected]>
1 parent 96edd7c commit 8a311bb

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

packages/devextreme/js/__internal/ui/file_uploader.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1578,7 +1578,8 @@ class FileUploader extends Editor<FileUploaderProperties> {
15781578
}
15791579

15801580
this._isCustomClickEvent = true;
1581-
eventsEngine.triggerHandler(this._$fileInput, { type: 'click' });
1581+
// @ts-expect-error update events_engine interface to support trigger method
1582+
eventsEngine.trigger(this._$fileInput, 'click');
15821583
this._isCustomClickEvent = false;
15831584
}
15841585

packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/fileUploader.tests.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2665,6 +2665,21 @@ QUnit.module('file uploading', moduleConfig, () => {
26652665
assert.equal($(message).text(), instance.option('uploadAbortedMessage'), 'has uploadAbortedMessage');
26662666
});
26672667
});
2668+
2669+
QUnit.test('should trigger native input click to open a system dialog on upload button click (T1307271)', function(assert) {
2670+
const $fileUploader = $('#fileuploader').dxFileUploader();
2671+
const instance = $fileUploader.dxFileUploader('instance');
2672+
const inputElement = $fileUploader.find(`.${FILEUPLOADER_INPUT_CLASS}`).get(0);
2673+
const nativeClickSpy = sinon.spy();
2674+
2675+
inputElement.addEventListener('click', nativeClickSpy);
2676+
2677+
instance._selectFileDialogClickHandler();
2678+
2679+
assert.strictEqual(nativeClickSpy.calledOnce, true, 'native click triggered');
2680+
2681+
inputElement.removeEventListener('click', nativeClickSpy);
2682+
});
26682683
});
26692684

26702685
QUnit.module('uploading progress', moduleConfig, () => {

0 commit comments

Comments
 (0)