diff --git a/README.md b/README.md
index 50cfcb0..030dd46 100644
--- a/README.md
+++ b/README.md
@@ -83,7 +83,7 @@ React.render(, container);
|beforeUpload| function |null| before upload check, return false or a rejected Promise will stop upload, only for modern browsers|
|customRequest | function | null | provide an override for the default xhr behavior for additional customization|
|withCredentials | boolean | false | ajax upload with cookie send |
-|openFileDialogOnClick | boolean | true | useful for drag only upload as it does not trigger on enter key or click event |
+|openFileDialogOnClick | boolean/function():boolean | true | useful for drag only upload as it does not trigger on enter key or click event |
#### onError arguments
diff --git a/src/AjaxUploader.tsx b/src/AjaxUploader.tsx
index c9a6136..8823933 100644
--- a/src/AjaxUploader.tsx
+++ b/src/AjaxUploader.tsx
@@ -261,6 +261,11 @@ class AjaxUploader extends Component {
this.fileInput = node;
};
+ eventHandler = (fn: (() => boolean) | boolean, originFn: Function, e: React.MouseEvent | React.KeyboardEvent) => {
+ if (typeof fn === 'function' ? fn() : fn) {
+ originFn(e);
+ }
+ };
render() {
const {
component: Tag,
@@ -295,8 +300,8 @@ class AjaxUploader extends Component {
const events = disabled
? {}
: {
- onClick: openFileDialogOnClick ? this.onClick : () => {},
- onKeyDown: openFileDialogOnClick ? this.onKeyDown : () => {},
+ onClick: (e) => this.eventHandler(openFileDialogOnClick, this.onClick, e),
+ onKeyDown: (e) => this.eventHandler(openFileDialogOnClick, this.onKeyDown, e),
onMouseEnter,
onMouseLeave,
onDrop: this.onFileDrop,
diff --git a/src/interface.tsx b/src/interface.tsx
index 1c6e1d5..5485a99 100644
--- a/src/interface.tsx
+++ b/src/interface.tsx
@@ -31,7 +31,7 @@ export interface UploadProps
) => BeforeUploadFileType | Promise | void;
customRequest?: (option: UploadRequestOption) => void | { abort: () => void };
withCredentials?: boolean;
- openFileDialogOnClick?: boolean;
+ openFileDialogOnClick?: boolean | (() => boolean);
prefixCls?: string;
id?: string;
onMouseEnter?: (e: React.MouseEvent) => void;