From f9a040a83038b1063eaacda2774139b341ffecbf Mon Sep 17 00:00:00 2001 From: Spencer Murray Date: Fri, 2 Aug 2024 12:55:48 -0400 Subject: [PATCH 1/3] Call dialog.close() in onFormClose and onFormSubmitted callbacks for createForm forms --- packages/feedback/src/core/integration.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/feedback/src/core/integration.ts b/packages/feedback/src/core/integration.ts index e2194f43a1d5..783e27b30e63 100644 --- a/packages/feedback/src/core/integration.ts +++ b/packages/feedback/src/core/integration.ts @@ -318,7 +318,21 @@ export const buildFeedbackIntegration = ({ async createForm( optionOverrides: OverrideFeedbackConfiguration = {}, ): Promise> { - return _loadAndRenderDialog(mergeOptions(_options, optionOverrides)); + const mergedOptions = mergeOptions(_options, optionOverrides); + + const dialog = await _loadAndRenderDialog({ + ...mergedOptions, + onFormClose: () => { + dialog && dialog.close(); + mergedOptions.onFormClose && mergedOptions.onFormClose(); + }, + onFormSubmitted: () => { + dialog && dialog.close(); + mergedOptions.onFormSubmitted && mergedOptions.onFormSubmitted(); + }, + }); + + return dialog; }, /** From 841d57cfc3b313649fecf40e64454e17e6340410 Mon Sep 17 00:00:00 2001 From: Spencer Murray Date: Fri, 2 Aug 2024 14:11:11 -0400 Subject: [PATCH 2/3] Move dialog.close() call into _loadAndRenderDialog --- packages/feedback/src/core/integration.ts | 34 +++++++++++------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/packages/feedback/src/core/integration.ts b/packages/feedback/src/core/integration.ts index 783e27b30e63..b470b15271bb 100644 --- a/packages/feedback/src/core/integration.ts +++ b/packages/feedback/src/core/integration.ts @@ -209,12 +209,24 @@ export const buildFeedbackIntegration = ({ logger.error('[Feedback] Missing feedback screenshot integration. Proceeding without screenshots.'); } - return modalIntegration.createDialog({ - options, + const dialog = modalIntegration.createDialog({ + options: { + ...options, + onFormClose: () => { + dialog && dialog.close(); + options.onFormClose && options.onFormClose(); + }, + onFormSubmitted: () => { + dialog && dialog.close(); + options.onFormSubmitted && options.onFormSubmitted(); + }, + }, screenshotIntegration: screenshotRequired ? screenshotIntegration : undefined, sendFeedback, shadow: _createShadow(options), }); + + return dialog; }; const _attachTo = (el: Element | string, optionOverrides: OverrideFeedbackConfiguration = {}): Unsubscribe => { @@ -234,7 +246,7 @@ export const buildFeedbackIntegration = ({ dialog = await _loadAndRenderDialog({ ...mergedOptions, onFormClose: () => { - dialog && dialog.close(); + dialog && dialog.removeFromDom(); mergedOptions.onFormClose && mergedOptions.onFormClose(); }, onFormSubmitted: () => { @@ -318,21 +330,7 @@ export const buildFeedbackIntegration = ({ async createForm( optionOverrides: OverrideFeedbackConfiguration = {}, ): Promise> { - const mergedOptions = mergeOptions(_options, optionOverrides); - - const dialog = await _loadAndRenderDialog({ - ...mergedOptions, - onFormClose: () => { - dialog && dialog.close(); - mergedOptions.onFormClose && mergedOptions.onFormClose(); - }, - onFormSubmitted: () => { - dialog && dialog.close(); - mergedOptions.onFormSubmitted && mergedOptions.onFormSubmitted(); - }, - }); - - return dialog; + return _loadAndRenderDialog(mergeOptions(_options, optionOverrides)); }, /** From 7be412cfd765de38705a2d98ea6a7c6f38d93f28 Mon Sep 17 00:00:00 2001 From: Spencer Murray Date: Fri, 2 Aug 2024 14:32:25 -0400 Subject: [PATCH 3/3] Revert change to onFormClose for _attachTo --- packages/feedback/src/core/integration.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/feedback/src/core/integration.ts b/packages/feedback/src/core/integration.ts index b470b15271bb..888461c9a6bf 100644 --- a/packages/feedback/src/core/integration.ts +++ b/packages/feedback/src/core/integration.ts @@ -245,10 +245,6 @@ export const buildFeedbackIntegration = ({ if (!dialog) { dialog = await _loadAndRenderDialog({ ...mergedOptions, - onFormClose: () => { - dialog && dialog.removeFromDom(); - mergedOptions.onFormClose && mergedOptions.onFormClose(); - }, onFormSubmitted: () => { dialog && dialog.removeFromDom(); mergedOptions.onFormSubmitted && mergedOptions.onFormSubmitted();