From 05960ce168121766d44b09e1498afe2316894ccb Mon Sep 17 00:00:00 2001 From: Ryan Albrecht Date: Mon, 29 Apr 2024 12:52:59 -0700 Subject: [PATCH 1/3] fix(feedback): Clarify the difference between createWidget and createForm in the feedback public api --- packages/feedback/src/core/integration.ts | 31 +++++++++++++++-------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/packages/feedback/src/core/integration.ts b/packages/feedback/src/core/integration.ts index dc6c26269317..1d63494ac922 100644 --- a/packages/feedback/src/core/integration.ts +++ b/packages/feedback/src/core/integration.ts @@ -27,7 +27,7 @@ import { import { DEBUG_BUILD } from '../util/debug-build'; import { isScreenshotSupported } from '../util/isScreenshotSupported'; import { mergeOptions } from '../util/mergeOptions'; -import { Actor } from './components/Actor'; +import { Actor, ActorComponent } from './components/Actor'; import { createMainStyles } from './createMainStyles'; import { sendFeedback } from './sendFeedback'; import type { OptionalFeedbackConfiguration, OverrideFeedbackConfiguration } from './types'; @@ -198,7 +198,7 @@ export const buildFeedbackIntegration = ({ }); }; - const attachTo = (el: Element | string, optionOverrides: OverrideFeedbackConfiguration = {}): Unsubscribe => { + const _attachTo = (el: Element | string, optionOverrides: OverrideFeedbackConfiguration = {}): Unsubscribe => { const mergedOptions = mergeOptions(_options, optionOverrides); const targetEl = @@ -238,10 +238,11 @@ export const buildFeedbackIntegration = ({ return unsubscribe; }; - const autoInjectActor = (): void => { + const _createActor = (optionOverrides: OverrideFeedbackConfiguration = {}): ActorComponent => { const shadow = _createShadow(_options); const actor = Actor({ buttonLabel: _options.buttonLabel, shadow }); const mergedOptions = mergeOptions(_options, { + ...optionOverrides, onFormOpen() { actor.removeFromDom(); }, @@ -252,9 +253,8 @@ export const buildFeedbackIntegration = ({ actor.appendToDom(); }, }); - attachTo(actor.el, mergedOptions); - - actor.appendToDom(); + _attachTo(actor.el, mergedOptions); + return actor; }; return { @@ -264,7 +264,7 @@ export const buildFeedbackIntegration = ({ return; } - autoInjectActor(); + _createActor().appendToDom(); }, /** @@ -272,12 +272,23 @@ export const buildFeedbackIntegration = ({ * * The returned function can be used to remove the click listener */ - attachTo, + attachTo: _attachTo, + + /** + * Creates a new widget which is composed of a Button which triggers a Dialog. + * Accepts partial options to override any options passed to constructor. + */ + createWidget(optionOverrides: OverrideFeedbackConfiguration = {}): ActorComponent { + const actor = _createActor(mergeOptions(_options, optionOverrides)); + actor.appendToDom(); + return actor; + }, /** - * Creates a new widget. Accepts partial options to override any options passed to constructor. + * Creates a new Form which you can + * Accepts partial options to override any options passed to constructor. */ - async createWidget(optionOverrides: OverrideFeedbackConfiguration = {}): Promise { + async createForm(optionOverrides: OverrideFeedbackConfiguration = {}): Promise { return _loadAndRenderDialog(mergeOptions(_options, optionOverrides)); }, From 9e8e953d9e5f77432fc3511bb1511a83c03f5254 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Tue, 30 Apr 2024 08:54:14 +0200 Subject: [PATCH 2/3] fix types --- packages/feedback/src/core/integration.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/feedback/src/core/integration.ts b/packages/feedback/src/core/integration.ts index 1d63494ac922..466917ed0ee4 100644 --- a/packages/feedback/src/core/integration.ts +++ b/packages/feedback/src/core/integration.ts @@ -53,7 +53,8 @@ export const buildFeedbackIntegration = ({ }: BuilderOptions): IntegrationFn< Integration & { attachTo(el: Element | string, optionOverrides: OverrideFeedbackConfiguration): Unsubscribe; - createWidget(optionOverrides: OverrideFeedbackConfiguration): Promise; + createForm(optionOverrides: OverrideFeedbackConfiguration): Promise; + createWidget(optionOverrides: OverrideFeedbackConfiguration): ActorComponent; remove(): void; } > => { From 809711e9554dd94c0548be3ac74bc8cca045bbfa Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Tue, 30 Apr 2024 09:11:40 +0200 Subject: [PATCH 3/3] fix lint --- packages/feedback/src/core/integration.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/feedback/src/core/integration.ts b/packages/feedback/src/core/integration.ts index 466917ed0ee4..7d4d9199bc80 100644 --- a/packages/feedback/src/core/integration.ts +++ b/packages/feedback/src/core/integration.ts @@ -27,7 +27,8 @@ import { import { DEBUG_BUILD } from '../util/debug-build'; import { isScreenshotSupported } from '../util/isScreenshotSupported'; import { mergeOptions } from '../util/mergeOptions'; -import { Actor, ActorComponent } from './components/Actor'; +import type { ActorComponent } from './components/Actor'; +import { Actor } from './components/Actor'; import { createMainStyles } from './createMainStyles'; import { sendFeedback } from './sendFeedback'; import type { OptionalFeedbackConfiguration, OverrideFeedbackConfiguration } from './types';