From ca876b291a352e7599299d6b0879a51ddda112cb Mon Sep 17 00:00:00 2001 From: Cory LaViska Date: Fri, 10 Jun 2022 17:22:34 -0400 Subject: [PATCH] revert formdata event detection --- docs/resources/changelog.md | 1 - src/internal/formdata-event-polyfill.ts | 20 +++++++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/docs/resources/changelog.md b/docs/resources/changelog.md index 3740be77e..5cf314bbc 100644 --- a/docs/resources/changelog.md +++ b/docs/resources/changelog.md @@ -14,7 +14,6 @@ _During the beta period, these restrictions may be relaxed in the event of a mis - Improved RTL styles for `` [#783](https://github.com/shoelace-style/shoelace/issues/783) - Improved RTL styles for the toast stack [#785](https://github.com/shoelace-style/shoelace/issues/785) - Improved typings for translations and localized terms -- Improved the `FormData` event polyfill to use simpler detection logic - Upgraded @shoelace-style/localize to 3.0 ## 2.0.0-beta.75 diff --git a/src/internal/formdata-event-polyfill.ts b/src/internal/formdata-event-polyfill.ts index c50911a79..ce3fa19e8 100644 --- a/src/internal/formdata-event-polyfill.ts +++ b/src/internal/formdata-event-polyfill.ts @@ -69,8 +69,26 @@ class FormDataPolyfill extends FormData { } } +function supportsFormDataEvent() { + const form = document.createElement('form'); + let isSupported = false; + + document.body.append(form); + + form.addEventListener('submit', event => { + new FormData(event.target as HTMLFormElement); + event.preventDefault(); + }); + + form.addEventListener('formdata', () => (isSupported = true)); + form.dispatchEvent(new Event('submit', { cancelable: true })); + form.remove(); + + return isSupported; +} + function polyfillFormData() { - if (!window.FormData || !('FormDataEvent' in window)) { + if (!window.FormData || supportsFormDataEvent()) { return; }