From d8c76b46c70a312bcd1d802e38422c61ee1d5340 Mon Sep 17 00:00:00 2001 From: Ferit Date: Sun, 25 Oct 2026 22:34:25 +0200 Subject: [PATCH] fix: omit role=button and tabIndex when openFileDialogOnClick is false --- src/AjaxUploader.tsx | 5 +++-- tests/uploader.spec.tsx | 7 +++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/AjaxUploader.tsx b/src/AjaxUploader.tsx index 2d4de93..7d4e73e 100644 --- a/src/AjaxUploader.tsx +++ b/src/AjaxUploader.tsx @@ -373,6 +373,7 @@ class AjaxUploader extends Component { const dirProps: any = directory ? { directory: 'directory', webkitdirectory: 'webkitdirectory' } : {}; + const isInteractive = openFileDialogOnClick && !hasControlInside; const events = disabled ? {} : { @@ -382,10 +383,10 @@ class AjaxUploader extends Component { onMouseLeave, onDrop: this.onFileDrop, onDragOver: this.onFileDragOver, - tabIndex: hasControlInside ? undefined : '0', + tabIndex: isInteractive ? '0' : undefined, }; return ( - + { expect(container.querySelector('span')!).not.toHaveAttribute('role', 'button'); }); + it("Should not be focusable and doesn't have role=button with openFileDialogOnClick=false", () => { + const { container } = render(); + + expect(container.querySelector('span')!.tabIndex).not.toBe(0); + expect(container.querySelector('span')!).not.toHaveAttribute('role', 'button'); + }); + it('should receive same defaultRequest as src', done => { const { default: srcRequest } = require('../src/request'); let receivedDefaultRequest: any;