Skip to content

Commit c1ea49f

Browse files
authored
feat: support folder and deprecated directory (#643)
* feat: support folder and deprecated directory * test: add test case
1 parent 96e588a commit c1ea49f

File tree

3 files changed

+17
-3
lines changed

3 files changed

+17
-3
lines changed

src/AjaxUploader.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,7 @@ class AjaxUploader extends Component<UploadProps> {
321321
capture,
322322
children,
323323
directory,
324+
folder,
324325
openFileDialogOnClick,
325326
onMouseEnter,
326327
onMouseLeave,
@@ -333,9 +334,8 @@ class AjaxUploader extends Component<UploadProps> {
333334
[className]: className,
334335
});
335336
// because input don't have directory/webkitdirectory type declaration
336-
const dirProps: any = directory
337-
? { directory: 'directory', webkitdirectory: 'webkitdirectory' }
338-
: {};
337+
const dirProps: any =
338+
directory || folder ? { directory: 'directory', webkitdirectory: 'webkitdirectory' } : {};
339339
const events = disabled
340340
? {}
341341
: {

src/interface.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ export interface UploadProps
1313
component?: React.ComponentType<any> | string;
1414
action?: Action;
1515
method?: UploadRequestMethod;
16+
/** @deprecated Please use `folder` instead */
1617
directory?: boolean;
18+
folder?: boolean;
1719
data?: Record<string, unknown> | ((file: RcFile | string | Blob) => Record<string, unknown>);
1820
headers?: UploadRequestHeader;
1921
accept?: string;

tests/uploader.spec.tsx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1038,6 +1038,18 @@ describe('uploader', () => {
10381038
directory: false,
10391039
},
10401040
);
1041+
1042+
it('should trigger beforeUpload when uploading non-accepted files in folder mode', () => {
1043+
const beforeUpload = jest.fn();
1044+
const { container } = render(<Upload accept=".png" folder beforeUpload={beforeUpload} />);
1045+
1046+
fireEvent.change(container.querySelector('input')!, {
1047+
target: {
1048+
files: [new File([], 'bamboo.png'), new File([], 'light.jpg')],
1049+
},
1050+
});
1051+
expect(beforeUpload).toHaveBeenCalledTimes(2);
1052+
});
10411053
});
10421054

10431055
describe('transform file before request', () => {

0 commit comments

Comments
 (0)