diff --git a/src/utils/commonUtils.ts b/src/utils/commonUtils.ts
index 15847d8..30a0e84 100644
--- a/src/utils/commonUtils.ts
+++ b/src/utils/commonUtils.ts
@@ -38,6 +38,9 @@ export function resolveOnChange<
// }}
// />
+ // A bug report filed on WebKit's Bugzilla tracker, dating back to 2009, specifically addresses the issue of cloneNode() not copying files of elements.
+ // As of the last update, this bug was still marked as "NEW," indicating that it might not have been resolved yet.
+ // https://bugs.webkit.org/show_bug.cgi?id=28123
const currentTarget = target.cloneNode(true) as E;
// click clear icon
@@ -52,17 +55,19 @@ export function resolveOnChange<
}
// Trigger by composition event, this means we need force change the input value
- if (targetValue !== undefined) {
+ // https://github.com/ant-design/ant-design/issues/45737
+ // https://github.com/ant-design/ant-design/issues/46598
+ if (target.type !== 'file' && targetValue !== undefined) {
+ // A bug report filed on WebKit's Bugzilla tracker, dating back to 2009, specifically addresses the issue of cloneNode() not copying files of elements.
+ // As of the last update, this bug was still marked as "NEW," indicating that it might not have been resolved yet.
+ // https://bugs.webkit.org/show_bug.cgi?id=28123
const currentTarget = target.cloneNode(true) as E;
event = Object.create(e, {
target: { value: currentTarget },
currentTarget: { value: currentTarget },
});
- // https://github.com/ant-design/ant-design/issues/45737
- if (currentTarget.type !== 'file') {
- currentTarget.value = targetValue;
- }
+ currentTarget.value = targetValue;
onChange(event as React.ChangeEvent);
return;
}
diff --git a/tests/index.test.tsx b/tests/index.test.tsx
index 2a88538..bb5c757 100644
--- a/tests/index.test.tsx
+++ b/tests/index.test.tsx
@@ -90,6 +90,9 @@ describe('Input', () => {
fireEvent.change(inputEl, {
target: { files: [file] },
});
+
+ expect(onChange).toHaveBeenCalled();
+ expect(onChange.mock.calls[0][0].target.files[0]).toBe(file);
});
});