@gravity-ui/page-constructor 6.5.1 → 6.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/internal-typings/global.d.ts +1 -0
- package/build/cjs/models/constructor-items/sub-blocks.d.ts +2 -1
- package/build/cjs/models/constructor-items/sub-blocks.js.map +1 -1
- package/build/cjs/sub-blocks/HubspotForm/HubspotFormContainer.d.ts +1 -1
- package/build/cjs/sub-blocks/HubspotForm/HubspotFormContainer.js +5 -1
- package/build/cjs/sub-blocks/HubspotForm/HubspotFormContainer.js.map +1 -1
- package/build/cjs/sub-blocks/HubspotForm/index.js +2 -2
- package/build/cjs/sub-blocks/HubspotForm/index.js.map +1 -1
- package/build/cjs/sub-blocks/HubspotForm/setHubspotDefaultValues.d.ts +2 -0
- package/build/cjs/sub-blocks/HubspotForm/setHubspotDefaultValues.js +51 -0
- package/build/cjs/sub-blocks/HubspotForm/setHubspotDefaultValues.js.map +1 -0
- package/build/cjs/utils/hubspot.d.ts +1 -0
- package/build/cjs/utils/hubspot.js.map +1 -1
- package/build/esm/internal-typings/global.d.ts +1 -0
- package/build/esm/models/constructor-items/sub-blocks.d.ts +2 -1
- package/build/esm/models/constructor-items/sub-blocks.js.map +1 -1
- package/build/esm/sub-blocks/HubspotForm/HubspotFormContainer.d.ts +1 -1
- package/build/esm/sub-blocks/HubspotForm/HubspotFormContainer.js +5 -1
- package/build/esm/sub-blocks/HubspotForm/HubspotFormContainer.js.map +1 -1
- package/build/esm/sub-blocks/HubspotForm/index.js +2 -2
- package/build/esm/sub-blocks/HubspotForm/index.js.map +1 -1
- package/build/esm/sub-blocks/HubspotForm/setHubspotDefaultValues.d.ts +2 -0
- package/build/esm/sub-blocks/HubspotForm/setHubspotDefaultValues.js +47 -0
- package/build/esm/sub-blocks/HubspotForm/setHubspotDefaultValues.js.map +1 -0
- package/build/esm/utils/hubspot.d.ts +1 -0
- package/build/esm/utils/hubspot.js.map +1 -1
- package/package.json +1 -1
- package/server/models/constructor-items/sub-blocks.d.ts +2 -1
- package/server/utils/hubspot.d.ts +1 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ClassNameProps, QuoteType } from "../index.js";
|
|
2
2
|
import { ThemeSupporting } from "../../utils/index.js";
|
|
3
|
-
import { HubspotEventData, HubspotEventHandlers } from "../../utils/hubspot.js";
|
|
3
|
+
import { HubspotEventData, HubspotEventHandlers, HubspotFormDefaultValues } from "../../utils/hubspot.js";
|
|
4
4
|
import { AnalyticsEventsBase } from "../common.js";
|
|
5
5
|
import { ContentBlockProps } from "./blocks.js";
|
|
6
6
|
import { AuthorItem, ButtonProps, CardBaseProps, CardLayoutProps, ContentTheme, DividerSize, ImageCardMargins, ImageObjectProps, ImageProps, LayoutItemContentMargin, LinkProps, MediaProps, MediaView, PriceDetailedProps, TextTheme, Themable, ThemedImage } from "./common.js";
|
|
@@ -72,6 +72,7 @@ export interface HubspotFormProps extends HubspotEventHandlers, AnalyticsEventsB
|
|
|
72
72
|
onLoad?: (arg: HubspotEventData) => void;
|
|
73
73
|
hubspotEvents?: string[];
|
|
74
74
|
createDOMElement?: boolean;
|
|
75
|
+
defaultValues?: HubspotFormDefaultValues;
|
|
75
76
|
}
|
|
76
77
|
export interface QuoteProps extends Themable, CardBaseProps {
|
|
77
78
|
text?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sub-blocks.js","sourceRoot":"../../../../src","sources":["models/constructor-items/sub-blocks.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"sub-blocks.js","sourceRoot":"../../../../src","sources":["models/constructor-items/sub-blocks.ts"],"names":[],"mappings":";;;AA8BA,IAAY,YAoBX;AApBD,WAAY,YAAY;IACpB,mCAAmB,CAAA;IACnB,+BAAe,CAAA;IACf;;OAEG;IACH,gDAAgC,CAAA;IAChC,wCAAwB,CAAA;IACxB,0CAA0B,CAAA;IAC1B,0CAA0B,CAAA;IAC1B,kDAAkC,CAAA;IAClC,wCAAwB,CAAA;IACxB,mCAAmB,CAAA;IACnB,4CAA4B,CAAA;IAC5B;;OAEG;IACH,6BAAa,CAAA;IACb,wCAAwB,CAAA;IACxB,wCAAwB,CAAA;AAC5B,CAAC,EApBW,YAAY,4BAAZ,YAAY,QAoBvB;AAED,IAAY,YAGX;AAHD,WAAY,YAAY;IACpB,2BAAW,CAAA;IACX,6BAAa,CAAA;AACjB,CAAC,EAHW,YAAY,4BAAZ,YAAY,QAGvB;AAWD,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC1B,uCAAiB,CAAA;IACjB,yCAAmB,CAAA;AACvB,CAAC,EAHW,kBAAkB,kCAAlB,kBAAkB,QAG7B;AAEY,QAAA,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC","sourcesContent":["import {ClassNameProps, QuoteType} from '../../models';\nimport {ThemeSupporting} from '../../utils';\nimport {\n HubspotEventData,\n HubspotEventHandlers,\n HubspotFormDefaultValues,\n} from '../../utils/hubspot';\nimport {AnalyticsEventsBase} from '../common';\n\nimport {ContentBlockProps} from './blocks';\nimport {\n AuthorItem,\n ButtonProps,\n CardBaseProps,\n CardLayoutProps,\n ContentTheme,\n DividerSize,\n ImageCardMargins,\n ImageObjectProps,\n ImageProps,\n LayoutItemContentMargin,\n LinkProps,\n MediaProps,\n MediaView,\n PriceDetailedProps,\n TextTheme,\n Themable,\n ThemedImage,\n} from './common';\n\nexport enum SubBlockType {\n Divider = 'divider',\n Quote = 'quote',\n /**\n * @deprecated Will be removed\n */\n PriceDetailed = 'price-detailed',\n MediaCard = 'media-card',\n BannerCard = 'banner-card',\n LayoutItem = 'layout-item',\n BackgroundCard = 'background-card',\n BasicCard = 'basic-card',\n Content = 'content',\n HubspotForm = 'hubspot-form',\n /**\n * @deprecated Will be removed, use BasicCard instead\n */\n Card = 'card',\n PriceCard = 'price-card',\n ImageCard = 'image-card',\n}\n\nexport enum IconPosition {\n Top = 'top',\n Left = 'left',\n}\n\nexport interface PositionedIcon {\n value: ImageProps;\n position?: IconPosition;\n}\n\nexport interface IconWrapperProps {\n icon?: PositionedIcon;\n}\n\nexport enum ImageCardDirection {\n Direct = 'direct',\n Reverse = 'reverse',\n}\n\nexport const SubBlockTypes = Object.values(SubBlockType);\n\nexport interface DividerProps {\n size?: DividerSize;\n border?: boolean;\n}\n\nexport interface HubspotFormProps extends HubspotEventHandlers, AnalyticsEventsBase {\n className?: string;\n theme?: ContentTheme;\n isMobile?: boolean;\n region?: string;\n portalId: string;\n formId: string;\n formInstanceId?: string;\n formClassName?: string;\n\n /**\n * To use this handler for component that is rendered in iframe, set up useLoopBackHubspotEvents hook on top level frame\n */\n onBeforeLoad?: (arg: HubspotEventData) => void;\n\n /**\n * To use this handler for component that is rendered in iframe, set up useLoopBackHubspotEvents hook on top level frame\n */\n onBeforeSubmit?: (arg: HubspotEventData) => void;\n\n /**\n * To use this handler for component that is rendered in iframe, set up useLoopBackHubspotEvents hook on top level frame\n */\n onSubmit?: (arg: HubspotEventData) => void;\n\n /**\n * To use this handler for component that is rendered in iframe, set up useLoopBackHubspotEvents hook on top level frame\n */\n onLoad?: (arg: HubspotEventData) => void;\n hubspotEvents?: string[];\n createDOMElement?: boolean;\n defaultValues?: HubspotFormDefaultValues;\n}\n\n//cards\nexport interface QuoteProps extends Themable, CardBaseProps {\n text?: string;\n // for backward compatibility, yfmText will become property 'text' in major\n yfmText?: string;\n image: ThemedImage;\n logo: ThemeSupporting<ImageProps>;\n color?: string;\n /**\n * @deprecated use property button instead\n */\n url?: string;\n /**\n * @deprecated use property button instead\n */\n urlTitle?: string;\n author?: AuthorItem;\n /**\n * @deprecated use property button instead\n */\n buttonText?: string;\n theme?: TextTheme;\n quoteType?: QuoteType;\n button?: ButtonProps;\n}\n\nexport interface BackgroundCardProps\n extends CardBaseProps,\n AnalyticsEventsBase,\n CardLayoutProps,\n Omit<ContentBlockProps, 'colSizes' | 'centered' | 'controlPosition'> {\n url?: string;\n urlTitle?: string;\n background?: ThemeSupporting<ImageObjectProps>;\n paddingBottom?: 's' | 'm' | 'l' | 'xl';\n backgroundColor?: string;\n}\n\nexport interface BasicCardProps\n extends CardBaseProps,\n AnalyticsEventsBase,\n CardLayoutProps,\n Omit<ContentBlockProps, 'colSizes' | 'centered' | 'size' | 'theme' | 'controlPosition'> {\n url: string;\n urlTitle?: string;\n icon?: ThemeSupporting<ImageProps>;\n target?: string;\n iconPosition?: IconPosition;\n}\n\nexport interface BannerCardProps {\n title: string;\n subtitle?: string;\n className?: string;\n image?: ThemeSupporting<string>;\n disableCompress?: boolean;\n color?: ThemeSupporting<string>;\n theme?: TextTheme;\n button?: Pick<ButtonProps, 'text' | 'url' | 'target' | 'theme'>;\n mediaView?: MediaView;\n}\n\nexport interface MediaCardProps extends MediaProps, AnalyticsEventsBase, CardBaseProps {}\n\nexport interface PriceCardProps extends CardBaseProps, Pick<ContentBlockProps, 'theme'> {\n title: string;\n price: string;\n pricePeriod?: string;\n priceDetails?: string;\n description?: string;\n buttons?: ButtonProps[];\n links?: LinkProps[];\n backgroundColor?: string;\n list?: string[];\n}\n\nexport interface LayoutItemProps extends ClassNameProps, CardLayoutProps, AnalyticsEventsBase {\n content: Omit<ContentBlockProps, 'colSizes' | 'centered' | 'size'>;\n contentMargin?: LayoutItemContentMargin;\n media?: ThemeSupporting<MediaProps>;\n metaInfo?: string[];\n border?: boolean;\n fullscreen?: boolean;\n icon?: ThemeSupporting<PositionedIcon>;\n}\n\nexport interface ImageCardProps\n extends CardBaseProps,\n CardLayoutProps,\n Omit<ContentBlockProps, 'colSizes' | 'centered' | 'controlPosition'> {\n image: ThemeSupporting<ImageProps>;\n enableImageBorderRadius?: boolean;\n margins?: ImageCardMargins;\n direction?: ImageCardDirection;\n backgroundColor?: string;\n url?: string;\n urlTitle?: string;\n target?: string;\n}\n\n// sub-block models\nexport type DividerModel = {\n type: SubBlockType.Divider;\n} & DividerProps;\n\nexport type QuoteModel = {\n type: SubBlockType.Quote;\n} & QuoteProps;\n\nexport type LayoutItemModel = {\n type: SubBlockType.LayoutItem;\n} & LayoutItemProps;\n\nexport type BackgroundCardModel = {\n type: SubBlockType.BackgroundCard;\n} & BackgroundCardProps;\n\n/** @deprecated */\nexport type PriceDetailedModel = {\n type: SubBlockType.PriceDetailed;\n} & PriceDetailedProps;\n\nexport type MediaCardModel = {\n type: SubBlockType.MediaCard;\n} & MediaCardProps;\n\nexport type HubspotFormModel = {\n type: SubBlockType.HubspotForm;\n} & HubspotFormProps;\n\nexport type BannerCardModel = {\n type: SubBlockType.BannerCard;\n} & BannerCardProps;\n\nexport type BasicCardModel = {\n type: SubBlockType.BasicCard;\n} & BasicCardProps;\n\nexport type PriceCardModel = {\n type: SubBlockType.PriceCard;\n} & PriceCardProps;\n\nexport type ImageCardModel = {\n type: SubBlockType.ImageCard;\n} & ImageCardProps;\n\nexport type SubBlockModels =\n | DividerModel\n | QuoteModel\n | PriceDetailedModel\n | MediaCardModel\n | BackgroundCardModel\n | HubspotFormModel\n | BannerCardModel\n | BasicCardModel\n | PriceCardModel\n | LayoutItemModel\n | ImageCardModel;\n\nexport type SubBlock = SubBlockModels;\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { HubspotFormProps } from "../../models/index.js";
|
|
3
|
-
type HubspotFormContainerPropsKeys = 'className' | 'formId' | 'formInstanceId' | 'portalId' | 'region' | 'formClassName' | 'createDOMElement';
|
|
3
|
+
type HubspotFormContainerPropsKeys = 'className' | 'formId' | 'formInstanceId' | 'portalId' | 'region' | 'formClassName' | 'createDOMElement' | 'defaultValues';
|
|
4
4
|
type HubspotFormContainerProps = Pick<HubspotFormProps, HubspotFormContainerPropsKeys>;
|
|
5
5
|
declare const HubspotFormContainer: React.ForwardRefExoticComponent<HubspotFormContainerProps & React.RefAttributes<HTMLDivElement>>;
|
|
6
6
|
export default HubspotFormContainer;
|
|
@@ -5,8 +5,9 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
5
5
|
const React = tslib_1.__importStar(require("react"));
|
|
6
6
|
const hooks_1 = require("../../hooks/index.js");
|
|
7
7
|
const loadHubspotScript_1 = tslib_1.__importDefault(require("./loadHubspotScript.js"));
|
|
8
|
+
const setHubspotDefaultValues_1 = require("./setHubspotDefaultValues.js");
|
|
8
9
|
const HubspotFormContainer = React.forwardRef((props, ref) => {
|
|
9
|
-
const { className, formId, formInstanceId, portalId, region, formClassName, createDOMElement, } = props;
|
|
10
|
+
const { className, formId, formInstanceId, portalId, region, formClassName, createDOMElement, defaultValues, } = props;
|
|
10
11
|
const containerRef = React.useRef(null);
|
|
11
12
|
const hsContainerRef = React.useRef();
|
|
12
13
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
@@ -30,6 +31,9 @@ const HubspotFormContainer = React.forwardRef((props, ref) => {
|
|
|
30
31
|
target: `#${containerId}`,
|
|
31
32
|
cssClass: formClassName,
|
|
32
33
|
formInstanceId,
|
|
34
|
+
onFormReady: defaultValues
|
|
35
|
+
? (form) => (0, setHubspotDefaultValues_1.setHubspotDefaultValues)(form, defaultValues)
|
|
36
|
+
: undefined,
|
|
33
37
|
});
|
|
34
38
|
}
|
|
35
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HubspotFormContainer.js","sourceRoot":"../../../../src","sources":["sub-blocks/HubspotForm/HubspotFormContainer.tsx"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAE/B,gDAAqC;AAGrC,uFAAoD;
|
|
1
|
+
{"version":3,"file":"HubspotFormContainer.js","sourceRoot":"../../../../src","sources":["sub-blocks/HubspotForm/HubspotFormContainer.tsx"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAE/B,gDAAqC;AAGrC,uFAAoD;AACpD,0EAAkE;AAclE,MAAM,oBAAoB,GAAG,KAAK,CAAC,UAAU,CACzC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACX,MAAM,EACF,SAAS,EAET,MAAM,EACN,cAAc,EACd,QAAQ,EACR,MAAM,EACN,aAAa,EACb,gBAAgB,EAChB,aAAa,GAChB,GAAG,KAAK,CAAC;IAEV,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,EAAkB,CAAC;IAEtD,oEAAoE;IACpE,KAAK,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,OAAQ,CAAC,CAAC;IAE5D,MAAM,WAAW,GAAG,cAAc;QAC9B,CAAC,CAAC,gBAAgB,MAAM,IAAI,cAAc,EAAE;QAC5C,CAAC,CAAC,gBAAgB,MAAM,EAAE,CAAC;IAE/B,MAAM,UAAU,GAAG,GAAG,EAAE;QACpB,IAAI,YAAY,CAAC,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,gBAAgB,EAAE,CAAC;YACtE,cAAc,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACvD,YAAY,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;YAC7B,cAAc,CAAC,OAAO,CAAC,EAAE,GAAG,WAAW,CAAC;YACxC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,CAAC,gBAAgB,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;YAC9C,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;oBACtB,MAAM;oBACN,QAAQ;oBACR,MAAM;oBACN,MAAM,EAAE,IAAI,WAAW,EAAE;oBACzB,QAAQ,EAAE,aAAa;oBACvB,cAAc;oBACd,WAAW,EAAE,aAAa;wBACtB,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,iDAAuB,EAAC,IAAI,EAAE,aAAa,CAAC;wBACxD,CAAC,CAAC,SAAS;iBAClB,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC,CAAC;IAEF,IAAA,gBAAQ,EAAC,GAAG,EAAE;QACV,CAAC,KAAK,IAAI,EAAE;YACR,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAChB,MAAM,IAAA,2BAAiB,GAAE,CAAC;YAC9B,CAAC;YAED,UAAU,EAAE,CAAC;QACjB,CAAC,CAAC,EAAE,CAAC;QAEL,OAAO,GAAG,EAAE;YACR,IAAI,gBAAgB,IAAI,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;gBAC7E,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACrE,CAAC;QACL,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,OAAO,gCAAK,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,GAAI,CAAC;AAC7E,CAAC,CACJ,CAAC;AAEF,oBAAoB,CAAC,WAAW,GAAG,sBAAsB,CAAC;AAE1D,kBAAe,oBAAoB,CAAC","sourcesContent":["import * as React from 'react';\n\nimport {useMount} from '../../hooks';\nimport {HubspotFormProps} from '../../models';\n\nimport loadHubspotScript from './loadHubspotScript';\nimport {setHubspotDefaultValues} from './setHubspotDefaultValues';\n\ntype HubspotFormContainerPropsKeys =\n | 'className'\n | 'formId'\n | 'formInstanceId'\n | 'portalId'\n | 'region'\n | 'formClassName'\n | 'createDOMElement'\n | 'defaultValues';\n\ntype HubspotFormContainerProps = Pick<HubspotFormProps, HubspotFormContainerPropsKeys>;\n\nconst HubspotFormContainer = React.forwardRef<HTMLDivElement, HubspotFormContainerProps>(\n (props, ref) => {\n const {\n className,\n\n formId,\n formInstanceId,\n portalId,\n region,\n formClassName,\n createDOMElement,\n defaultValues,\n } = props;\n\n const containerRef = React.useRef<HTMLDivElement>(null);\n const hsContainerRef = React.useRef<HTMLDivElement>();\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n React.useImperativeHandle(ref, () => containerRef.current!);\n\n const containerId = formInstanceId\n ? `hubspot-form-${formId}-${formInstanceId}`\n : `hubspot-form-${formId}`;\n\n const createForm = () => {\n if (containerRef.current && !hsContainerRef.current && createDOMElement) {\n hsContainerRef.current = document.createElement('div');\n containerRef.current.id = '';\n hsContainerRef.current.id = containerId;\n containerRef.current.appendChild(hsContainerRef.current);\n }\n\n if (!createDOMElement || hsContainerRef.current) {\n if (window.hbspt) {\n window.hbspt.forms.create({\n region,\n portalId,\n formId,\n target: `#${containerId}`,\n cssClass: formClassName,\n formInstanceId,\n onFormReady: defaultValues\n ? (form) => setHubspotDefaultValues(form, defaultValues)\n : undefined,\n });\n }\n }\n };\n\n useMount(() => {\n (async () => {\n if (!window.hbspt) {\n await loadHubspotScript();\n }\n\n createForm();\n })();\n\n return () => {\n if (createDOMElement && containerRef.current && containerRef.current.lastChild) {\n containerRef.current.removeChild(containerRef.current.lastChild);\n }\n };\n });\n\n return <div className={className} id={containerId} ref={containerRef} />;\n },\n);\n\nHubspotFormContainer.displayName = 'HubspotFormContainer';\n\nexport default HubspotFormContainer;\n"]}
|
|
@@ -13,7 +13,7 @@ const b = (0, utils_1.block)('hubspot-form');
|
|
|
13
13
|
const HubspotForm = React.forwardRef((props, ref) => {
|
|
14
14
|
const { className, theme: themeProp, isMobile: isMobileProp, formId, formInstanceId, portalId, region, formClassName,
|
|
15
15
|
// hubspotEvents, // TODO: decide how to handle them
|
|
16
|
-
analyticsEvents, onBeforeSubmit, onSubmit, onBeforeLoad, onLoad, createDOMElement, onSubmitError, } = props;
|
|
16
|
+
analyticsEvents, onBeforeSubmit, onSubmit, onBeforeLoad, onLoad, createDOMElement, onSubmitError, defaultValues, } = props;
|
|
17
17
|
const themeValue = (0, theme_1.useTheme)();
|
|
18
18
|
const handleAnalytics = (0, hooks_1.useAnalytics)(models_1.DefaultEventNames.HubspotFormSubmit);
|
|
19
19
|
const isMobileValue = React.useContext(mobileContext_1.MobileContext);
|
|
@@ -38,7 +38,7 @@ const HubspotForm = React.forwardRef((props, ref) => {
|
|
|
38
38
|
onSubmitError,
|
|
39
39
|
]);
|
|
40
40
|
(0, hooks_1.useHandleHubspotEvents)(handlers, formId);
|
|
41
|
-
return ((0, jsx_runtime_1.jsx)(HubspotFormContainer_1.default, { createDOMElement: createDOMElement, className: b({ theme, mobile }, className), formClassName: formClassName, formId: formId, portalId: portalId, formInstanceId: formInstanceId, region: region, ref: ref }, [formClassName, formId, formInstanceId, portalId, region].join()));
|
|
41
|
+
return ((0, jsx_runtime_1.jsx)(HubspotFormContainer_1.default, { createDOMElement: createDOMElement, className: b({ theme, mobile }, className), formClassName: formClassName, formId: formId, portalId: portalId, formInstanceId: formInstanceId, region: region, defaultValues: defaultValues, ref: ref }, [formClassName, formId, formInstanceId, portalId, region].join()));
|
|
42
42
|
});
|
|
43
43
|
HubspotForm.displayName = 'HubspotForm';
|
|
44
44
|
exports.default = HubspotForm;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../../../../src","sources":["sub-blocks/HubspotForm/index.tsx"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAE/B,wEAA0D;AAC1D,wDAA6C;AAC7C,gDAAiE;AACjE,kDAAiE;AACjE,gDAAwD;AAExD,6FAA0D;AAI1D,MAAM,CAAC,GAAG,IAAA,aAAK,EAAC,cAAc,CAAC,CAAC;AAEhC,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAmC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAClF,MAAM,EACF,SAAS,EACT,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,YAAY,EACtB,MAAM,EACN,cAAc,EACd,QAAQ,EACR,MAAM,EACN,aAAa;IACb,oDAAoD;IACpD,eAAe,EACf,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,MAAM,EACN,gBAAgB,EAChB,aAAa,GAChB,GAAG,KAAK,CAAC;IAEV,MAAM,UAAU,GAAG,IAAA,gBAAQ,GAAE,CAAC;IAC9B,MAAM,eAAe,GAAG,IAAA,oBAAY,EAAC,0BAAiB,CAAC,iBAAiB,CAAC,CAAC;IAC1E,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,6BAAa,CAAC,CAAC;IAEtD,MAAM,KAAK,GAAG,SAAS,IAAI,UAAU,CAAC;IACtC,MAAM,MAAM,GAAG,YAAY,IAAI,aAAa,CAAC;IAE7C,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAC1B,GAAG,EAAE,CAAC,CAAC;QACH,YAAY;QACZ,cAAc;QACd,MAAM;QACN,aAAa;QACb,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;YAChB,eAAe,CAAC,eAAe,CAAC,CAAC;YACjC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;KACJ,CAAC,EACF;QACI,YAAY;QACZ,cAAc;QACd,MAAM;QACN,eAAe;QACf,eAAe;QACf,QAAQ;QACR,aAAa;KAChB,CACJ,CAAC;IAEF,IAAA,8BAAsB,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACzC,OAAO,CACH,uBAAC,8BAAoB,IACjB,gBAAgB,EAAE,gBAAgB,EAElC,SAAS,EAAE,CAAC,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,SAAS,CAAC,EACxC,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../../../../src","sources":["sub-blocks/HubspotForm/index.tsx"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAE/B,wEAA0D;AAC1D,wDAA6C;AAC7C,gDAAiE;AACjE,kDAAiE;AACjE,gDAAwD;AAExD,6FAA0D;AAI1D,MAAM,CAAC,GAAG,IAAA,aAAK,EAAC,cAAc,CAAC,CAAC;AAEhC,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAmC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAClF,MAAM,EACF,SAAS,EACT,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,YAAY,EACtB,MAAM,EACN,cAAc,EACd,QAAQ,EACR,MAAM,EACN,aAAa;IACb,oDAAoD;IACpD,eAAe,EACf,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,MAAM,EACN,gBAAgB,EAChB,aAAa,EACb,aAAa,GAChB,GAAG,KAAK,CAAC;IAEV,MAAM,UAAU,GAAG,IAAA,gBAAQ,GAAE,CAAC;IAC9B,MAAM,eAAe,GAAG,IAAA,oBAAY,EAAC,0BAAiB,CAAC,iBAAiB,CAAC,CAAC;IAC1E,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,6BAAa,CAAC,CAAC;IAEtD,MAAM,KAAK,GAAG,SAAS,IAAI,UAAU,CAAC;IACtC,MAAM,MAAM,GAAG,YAAY,IAAI,aAAa,CAAC;IAE7C,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAC1B,GAAG,EAAE,CAAC,CAAC;QACH,YAAY;QACZ,cAAc;QACd,MAAM;QACN,aAAa;QACb,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;YAChB,eAAe,CAAC,eAAe,CAAC,CAAC;YACjC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;KACJ,CAAC,EACF;QACI,YAAY;QACZ,cAAc;QACd,MAAM;QACN,eAAe;QACf,eAAe;QACf,QAAQ;QACR,aAAa;KAChB,CACJ,CAAC;IAEF,IAAA,8BAAsB,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACzC,OAAO,CACH,uBAAC,8BAAoB,IACjB,gBAAgB,EAAE,gBAAgB,EAElC,SAAS,EAAE,CAAC,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,SAAS,CAAC,EACxC,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,aAAa,EAC5B,GAAG,EAAE,GAAG,IARH,CAAC,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CASvE,CACL,CAAC;AACN,CAAC,CAAC,CAAC;AAEH,WAAW,CAAC,WAAW,GAAG,aAAa,CAAC;AAExC,kBAAe,WAAW,CAAC","sourcesContent":["import * as React from 'react';\n\nimport {MobileContext} from '../../context/mobileContext';\nimport {useTheme} from '../../context/theme';\nimport {useAnalytics, useHandleHubspotEvents} from '../../hooks';\nimport {DefaultEventNames, HubspotFormProps} from '../../models';\nimport {HubspotEventHandlers, block} from '../../utils';\n\nimport HubspotFormContainer from './HubspotFormContainer';\n\nimport './HubspotForm.scss';\n\nconst b = block('hubspot-form');\n\nconst HubspotForm = React.forwardRef<HTMLDivElement, HubspotFormProps>((props, ref) => {\n const {\n className,\n theme: themeProp,\n isMobile: isMobileProp,\n formId,\n formInstanceId,\n portalId,\n region,\n formClassName,\n // hubspotEvents, // TODO: decide how to handle them\n analyticsEvents,\n onBeforeSubmit,\n onSubmit,\n onBeforeLoad,\n onLoad,\n createDOMElement,\n onSubmitError,\n defaultValues,\n } = props;\n\n const themeValue = useTheme();\n const handleAnalytics = useAnalytics(DefaultEventNames.HubspotFormSubmit);\n const isMobileValue = React.useContext(MobileContext);\n\n const theme = themeProp ?? themeValue;\n const mobile = isMobileProp ?? isMobileValue;\n\n const handlers = React.useMemo<HubspotEventHandlers>(\n () => ({\n onBeforeLoad,\n onBeforeSubmit,\n onLoad,\n onSubmitError,\n onSubmit: (event) => {\n handleAnalytics(analyticsEvents);\n onSubmit?.(event);\n },\n }),\n [\n onBeforeLoad,\n onBeforeSubmit,\n onLoad,\n handleAnalytics,\n analyticsEvents,\n onSubmit,\n onSubmitError,\n ],\n );\n\n useHandleHubspotEvents(handlers, formId);\n return (\n <HubspotFormContainer\n createDOMElement={createDOMElement}\n key={[formClassName, formId, formInstanceId, portalId, region].join()}\n className={b({theme, mobile}, className)}\n formClassName={formClassName}\n formId={formId}\n portalId={portalId}\n formInstanceId={formInstanceId}\n region={region}\n defaultValues={defaultValues}\n ref={ref}\n />\n );\n});\n\nHubspotForm.displayName = 'HubspotForm';\n\nexport default HubspotForm;\n"]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setHubspotDefaultValues = void 0;
|
|
4
|
+
const setInputValue = (inputs, value) => {
|
|
5
|
+
const input = inputs[0];
|
|
6
|
+
const type = input.type;
|
|
7
|
+
switch (type) {
|
|
8
|
+
case 'checkbox':
|
|
9
|
+
input.checked = Boolean(value);
|
|
10
|
+
return;
|
|
11
|
+
case 'radio':
|
|
12
|
+
inputs.forEach((radio) => {
|
|
13
|
+
if (radio.value === String(value)) {
|
|
14
|
+
input.checked = true;
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
return;
|
|
18
|
+
default:
|
|
19
|
+
input.value = String(value);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
const setSelectValue = (select, value) => {
|
|
23
|
+
const options = Array.from(select.querySelectorAll('option'));
|
|
24
|
+
options.forEach((option) => {
|
|
25
|
+
if (option.value === String(value)) {
|
|
26
|
+
option.selected = true;
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
const setValue = (elements, value) => {
|
|
31
|
+
const element = elements[0];
|
|
32
|
+
switch (element.tagName.toLowerCase()) {
|
|
33
|
+
case 'input':
|
|
34
|
+
setInputValue(elements, value);
|
|
35
|
+
return;
|
|
36
|
+
case 'textarea':
|
|
37
|
+
element.value = String(value);
|
|
38
|
+
return;
|
|
39
|
+
case 'select':
|
|
40
|
+
setSelectValue(element, value);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
const setHubspotDefaultValues = (form, defaultValues) => {
|
|
45
|
+
Object.entries(defaultValues).forEach(([name, value]) => {
|
|
46
|
+
const inputs = Array.from(form.querySelectorAll(`[name="${name}"]`));
|
|
47
|
+
setValue(inputs, value);
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
exports.setHubspotDefaultValues = setHubspotDefaultValues;
|
|
51
|
+
//# sourceMappingURL=setHubspotDefaultValues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setHubspotDefaultValues.js","sourceRoot":"../../../../src","sources":["sub-blocks/HubspotForm/setHubspotDefaultValues.ts"],"names":[],"mappings":";;;AAOA,MAAM,aAAa,GAAG,CAAC,MAA0B,EAAE,KAAwB,EAAE,EAAE;IAC3E,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IAExB,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,UAAU;YACX,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;YAC/B,OAAO;QACX,KAAK,OAAO;YACR,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBACrB,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;oBAChC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;gBACzB,CAAC;YACL,CAAC,CAAC,CAAC;YACH,OAAO;QACX;YACI,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,MAAyB,EAAE,KAAwB,EAAE,EAAE;IAC3E,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE9D,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACvB,IAAI,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC3B,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,QAAmB,EAAE,KAAwB,EAAE,EAAE;IAC/D,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE5B,QAAQ,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;QACpC,KAAK,OAAO;YACR,aAAa,CAAC,QAA8B,EAAE,KAAK,CAAC,CAAC;YACrD,OAAO;QACX,KAAK,UAAU;YACV,OAA+B,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YACvD,OAAO;QACX,KAAK,QAAQ;YACT,cAAc,CAAC,OAA4B,EAAE,KAAK,CAAC,CAAC;YACpD,OAAO;IACf,CAAC;AACL,CAAC,CAAC;AAEK,MAAM,uBAAuB,GAAG,CACnC,IAAqB,EACrB,aAAuC,EACzC,EAAE;IACA,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;QACpD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC;QACrE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AARW,QAAA,uBAAuB,2BAQlC","sourcesContent":["import {HubspotFormDefaultValues} from '../../utils/hubspot';\n\n/* eslint-disable no-not-accumulator-reassign/no-not-accumulator-reassign */\n/* eslint-disable no-param-reassign */\n\ntype HubspotInputValue = HubspotFormDefaultValues[string];\n\nconst setInputValue = (inputs: HTMLInputElement[], value: HubspotInputValue) => {\n const input = inputs[0];\n const type = input.type;\n\n switch (type) {\n case 'checkbox':\n input.checked = Boolean(value);\n return;\n case 'radio':\n inputs.forEach((radio) => {\n if (radio.value === String(value)) {\n input.checked = true;\n }\n });\n return;\n default:\n input.value = String(value);\n }\n};\n\nconst setSelectValue = (select: HTMLSelectElement, value: HubspotInputValue) => {\n const options = Array.from(select.querySelectorAll('option'));\n\n options.forEach((option) => {\n if (option.value === String(value)) {\n option.selected = true;\n }\n });\n};\n\nconst setValue = (elements: Element[], value: HubspotInputValue) => {\n const element = elements[0];\n\n switch (element.tagName.toLowerCase()) {\n case 'input':\n setInputValue(elements as HTMLInputElement[], value);\n return;\n case 'textarea':\n (element as HTMLTextAreaElement).value = String(value);\n return;\n case 'select':\n setSelectValue(element as HTMLSelectElement, value);\n return;\n }\n};\n\nexport const setHubspotDefaultValues = (\n form: HTMLFormElement,\n defaultValues: HubspotFormDefaultValues,\n) => {\n Object.entries(defaultValues).forEach(([name, value]) => {\n const inputs = Array.from(form.querySelectorAll(`[name=\"${name}\"]`));\n setValue(inputs, value);\n });\n};\n"]}
|
|
@@ -5,6 +5,7 @@ export interface HubspotEventData {
|
|
|
5
5
|
id: string;
|
|
6
6
|
data?: unknown;
|
|
7
7
|
}
|
|
8
|
+
export type HubspotFormDefaultValues = Record<string, string | number | boolean>;
|
|
8
9
|
export declare function isHubspotEventData(maybeData: unknown): maybeData is HubspotEventData;
|
|
9
10
|
export interface HubspotEventHandlers {
|
|
10
11
|
onBeforeLoad?: (arg: HubspotEventData) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hubspot.js","sourceRoot":"../../../src","sources":["utils/hubspot.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"hubspot.js","sourceRoot":"../../../src","sources":["utils/hubspot.ts"],"names":[],"mappings":";;AAiBA,gDAOC;AAUD,sDAgBC;AAED,kDAmCC;AAtED,SAAgB,kBAAkB,CAAC,SAAkB;IACjD,OAAO,CACH,OAAO,SAAS,KAAK,QAAQ;QAC7B,SAAS,KAAK,IAAI;QAClB,MAAM,IAAI,SAAS;QAClB,SAAqC,CAAC,MAAM,CAAC,KAAK,gBAAgB,CACtE,CAAC;AACN,CAAC;AAUD,SAAgB,qBAAqB,CAAC,MAAc;IAChD,OAAO,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAe,EAAQ,EAAE;QAClD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,OAAO;QACX,CAAC;QAED,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;YACrB,OAAO;QACX,CAAC;QAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO;QACX,CAAC;QAEA,MAAwB,EAAE,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC,CAAC;AACN,CAAC;AAED,SAAgB,mBAAmB,CAAC,QAA8B,EAAE,MAAc;IAC9E,OAAO,CAAC,EAAC,IAAI,EAAe,EAAQ,EAAE;QAClC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,OAAO;QACX,CAAC;QAED,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;YACrB,OAAO;QACX,CAAC;QAED,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;YACrB,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACtB,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC9B,MAAM;YACV,CAAC;YACD,KAAK,aAAa,CAAC,CAAC,CAAC;gBACjB,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;gBACxB,MAAM;YACV,CAAC;YACD,KAAK,cAAc,CAAC,CAAC,CAAC;gBAClB,QAAQ,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC;gBAChC,MAAM;YACV,CAAC;YACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;gBACrB,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC1B,MAAM;YACV,CAAC;YACD,KAAK,aAAa,CAAC,CAAC,CAAC;gBACjB,QAAQ,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC/B,MAAM;YACV,CAAC;YACD;gBACI,MAAM;QACd,CAAC;IACL,CAAC,CAAC;AACN,CAAC","sourcesContent":["export type HubspotEventName =\n | 'onBeforeFormInit'\n | 'onFormReady'\n | 'onFormSubmit'\n | 'onFormSubmitted'\n | 'onFormError'\n | `_${string}`;\n\nexport interface HubspotEventData {\n type: HubspotEventName | string;\n eventName: HubspotEventName;\n id: string;\n data?: unknown;\n}\n\nexport type HubspotFormDefaultValues = Record<string, string | number | boolean>;\n\nexport function isHubspotEventData(maybeData: unknown): maybeData is HubspotEventData {\n return (\n typeof maybeData === 'object' &&\n maybeData !== null &&\n 'type' in maybeData &&\n (maybeData as Record<string, unknown>)['type'] === 'hsFormCallback'\n );\n}\n\nexport interface HubspotEventHandlers {\n onBeforeLoad?: (arg: HubspotEventData) => void;\n onBeforeSubmit?: (arg: HubspotEventData) => void;\n onSubmit?: (arg: HubspotEventData) => void;\n onLoad?: (arg: HubspotEventData) => void;\n onSubmitError?: (arg: HubspotEventData) => void;\n}\n\nexport function loopBackHabspotEvents(formId: string) {\n return ({data, source, origin}: MessageEvent): void => {\n if (!isHubspotEventData(data)) {\n return;\n }\n\n if (data.id !== formId) {\n return;\n }\n\n if (source === window) {\n return;\n }\n\n (source as Window | null)?.postMessage(data, origin);\n };\n}\n\nexport function handleHubspotEvents(handlers: HubspotEventHandlers, formId: string) {\n return ({data}: MessageEvent): void => {\n if (!isHubspotEventData(data)) {\n return;\n }\n\n if (data.id !== formId) {\n return;\n }\n\n switch (data.eventName) {\n case 'onBeforeFormInit': {\n handlers.onBeforeLoad?.(data);\n break;\n }\n case 'onFormReady': {\n handlers.onLoad?.(data);\n break;\n }\n case 'onFormSubmit': {\n handlers.onBeforeSubmit?.(data);\n break;\n }\n case 'onFormSubmitted': {\n handlers.onSubmit?.(data);\n break;\n }\n case 'onFormError': {\n handlers.onSubmitError?.(data);\n break;\n }\n default:\n break;\n }\n };\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ClassNameProps, QuoteType } from "../index.js";
|
|
2
2
|
import { ThemeSupporting } from "../../utils/index.js";
|
|
3
|
-
import { HubspotEventData, HubspotEventHandlers } from "../../utils/hubspot.js";
|
|
3
|
+
import { HubspotEventData, HubspotEventHandlers, HubspotFormDefaultValues } from "../../utils/hubspot.js";
|
|
4
4
|
import { AnalyticsEventsBase } from "../common.js";
|
|
5
5
|
import { ContentBlockProps } from "./blocks.js";
|
|
6
6
|
import { AuthorItem, ButtonProps, CardBaseProps, CardLayoutProps, ContentTheme, DividerSize, ImageCardMargins, ImageObjectProps, ImageProps, LayoutItemContentMargin, LinkProps, MediaProps, MediaView, PriceDetailedProps, TextTheme, Themable, ThemedImage } from "./common.js";
|
|
@@ -72,6 +72,7 @@ export interface HubspotFormProps extends HubspotEventHandlers, AnalyticsEventsB
|
|
|
72
72
|
onLoad?: (arg: HubspotEventData) => void;
|
|
73
73
|
hubspotEvents?: string[];
|
|
74
74
|
createDOMElement?: boolean;
|
|
75
|
+
defaultValues?: HubspotFormDefaultValues;
|
|
75
76
|
}
|
|
76
77
|
export interface QuoteProps extends Themable, CardBaseProps {
|
|
77
78
|
text?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sub-blocks.js","sourceRoot":"../../../../src","sources":["models/constructor-items/sub-blocks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sub-blocks.js","sourceRoot":"../../../../src","sources":["models/constructor-items/sub-blocks.ts"],"names":[],"mappings":"AA8BA,MAAM,CAAN,IAAY,YAoBX;AApBD,WAAY,YAAY;IACpB,mCAAmB,CAAA;IACnB,+BAAe,CAAA;IACf;;OAEG;IACH,gDAAgC,CAAA;IAChC,wCAAwB,CAAA;IACxB,0CAA0B,CAAA;IAC1B,0CAA0B,CAAA;IAC1B,kDAAkC,CAAA;IAClC,wCAAwB,CAAA;IACxB,mCAAmB,CAAA;IACnB,4CAA4B,CAAA;IAC5B;;OAEG;IACH,6BAAa,CAAA;IACb,wCAAwB,CAAA;IACxB,wCAAwB,CAAA;AAC5B,CAAC,EApBW,YAAY,KAAZ,YAAY,QAoBvB;AAED,MAAM,CAAN,IAAY,YAGX;AAHD,WAAY,YAAY;IACpB,2BAAW,CAAA;IACX,6BAAa,CAAA;AACjB,CAAC,EAHW,YAAY,KAAZ,YAAY,QAGvB;AAWD,MAAM,CAAN,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC1B,uCAAiB,CAAA;IACjB,yCAAmB,CAAA;AACvB,CAAC,EAHW,kBAAkB,KAAlB,kBAAkB,QAG7B;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC","sourcesContent":["import {ClassNameProps, QuoteType} from '../../models';\nimport {ThemeSupporting} from '../../utils';\nimport {\n HubspotEventData,\n HubspotEventHandlers,\n HubspotFormDefaultValues,\n} from '../../utils/hubspot';\nimport {AnalyticsEventsBase} from '../common';\n\nimport {ContentBlockProps} from './blocks';\nimport {\n AuthorItem,\n ButtonProps,\n CardBaseProps,\n CardLayoutProps,\n ContentTheme,\n DividerSize,\n ImageCardMargins,\n ImageObjectProps,\n ImageProps,\n LayoutItemContentMargin,\n LinkProps,\n MediaProps,\n MediaView,\n PriceDetailedProps,\n TextTheme,\n Themable,\n ThemedImage,\n} from './common';\n\nexport enum SubBlockType {\n Divider = 'divider',\n Quote = 'quote',\n /**\n * @deprecated Will be removed\n */\n PriceDetailed = 'price-detailed',\n MediaCard = 'media-card',\n BannerCard = 'banner-card',\n LayoutItem = 'layout-item',\n BackgroundCard = 'background-card',\n BasicCard = 'basic-card',\n Content = 'content',\n HubspotForm = 'hubspot-form',\n /**\n * @deprecated Will be removed, use BasicCard instead\n */\n Card = 'card',\n PriceCard = 'price-card',\n ImageCard = 'image-card',\n}\n\nexport enum IconPosition {\n Top = 'top',\n Left = 'left',\n}\n\nexport interface PositionedIcon {\n value: ImageProps;\n position?: IconPosition;\n}\n\nexport interface IconWrapperProps {\n icon?: PositionedIcon;\n}\n\nexport enum ImageCardDirection {\n Direct = 'direct',\n Reverse = 'reverse',\n}\n\nexport const SubBlockTypes = Object.values(SubBlockType);\n\nexport interface DividerProps {\n size?: DividerSize;\n border?: boolean;\n}\n\nexport interface HubspotFormProps extends HubspotEventHandlers, AnalyticsEventsBase {\n className?: string;\n theme?: ContentTheme;\n isMobile?: boolean;\n region?: string;\n portalId: string;\n formId: string;\n formInstanceId?: string;\n formClassName?: string;\n\n /**\n * To use this handler for component that is rendered in iframe, set up useLoopBackHubspotEvents hook on top level frame\n */\n onBeforeLoad?: (arg: HubspotEventData) => void;\n\n /**\n * To use this handler for component that is rendered in iframe, set up useLoopBackHubspotEvents hook on top level frame\n */\n onBeforeSubmit?: (arg: HubspotEventData) => void;\n\n /**\n * To use this handler for component that is rendered in iframe, set up useLoopBackHubspotEvents hook on top level frame\n */\n onSubmit?: (arg: HubspotEventData) => void;\n\n /**\n * To use this handler for component that is rendered in iframe, set up useLoopBackHubspotEvents hook on top level frame\n */\n onLoad?: (arg: HubspotEventData) => void;\n hubspotEvents?: string[];\n createDOMElement?: boolean;\n defaultValues?: HubspotFormDefaultValues;\n}\n\n//cards\nexport interface QuoteProps extends Themable, CardBaseProps {\n text?: string;\n // for backward compatibility, yfmText will become property 'text' in major\n yfmText?: string;\n image: ThemedImage;\n logo: ThemeSupporting<ImageProps>;\n color?: string;\n /**\n * @deprecated use property button instead\n */\n url?: string;\n /**\n * @deprecated use property button instead\n */\n urlTitle?: string;\n author?: AuthorItem;\n /**\n * @deprecated use property button instead\n */\n buttonText?: string;\n theme?: TextTheme;\n quoteType?: QuoteType;\n button?: ButtonProps;\n}\n\nexport interface BackgroundCardProps\n extends CardBaseProps,\n AnalyticsEventsBase,\n CardLayoutProps,\n Omit<ContentBlockProps, 'colSizes' | 'centered' | 'controlPosition'> {\n url?: string;\n urlTitle?: string;\n background?: ThemeSupporting<ImageObjectProps>;\n paddingBottom?: 's' | 'm' | 'l' | 'xl';\n backgroundColor?: string;\n}\n\nexport interface BasicCardProps\n extends CardBaseProps,\n AnalyticsEventsBase,\n CardLayoutProps,\n Omit<ContentBlockProps, 'colSizes' | 'centered' | 'size' | 'theme' | 'controlPosition'> {\n url: string;\n urlTitle?: string;\n icon?: ThemeSupporting<ImageProps>;\n target?: string;\n iconPosition?: IconPosition;\n}\n\nexport interface BannerCardProps {\n title: string;\n subtitle?: string;\n className?: string;\n image?: ThemeSupporting<string>;\n disableCompress?: boolean;\n color?: ThemeSupporting<string>;\n theme?: TextTheme;\n button?: Pick<ButtonProps, 'text' | 'url' | 'target' | 'theme'>;\n mediaView?: MediaView;\n}\n\nexport interface MediaCardProps extends MediaProps, AnalyticsEventsBase, CardBaseProps {}\n\nexport interface PriceCardProps extends CardBaseProps, Pick<ContentBlockProps, 'theme'> {\n title: string;\n price: string;\n pricePeriod?: string;\n priceDetails?: string;\n description?: string;\n buttons?: ButtonProps[];\n links?: LinkProps[];\n backgroundColor?: string;\n list?: string[];\n}\n\nexport interface LayoutItemProps extends ClassNameProps, CardLayoutProps, AnalyticsEventsBase {\n content: Omit<ContentBlockProps, 'colSizes' | 'centered' | 'size'>;\n contentMargin?: LayoutItemContentMargin;\n media?: ThemeSupporting<MediaProps>;\n metaInfo?: string[];\n border?: boolean;\n fullscreen?: boolean;\n icon?: ThemeSupporting<PositionedIcon>;\n}\n\nexport interface ImageCardProps\n extends CardBaseProps,\n CardLayoutProps,\n Omit<ContentBlockProps, 'colSizes' | 'centered' | 'controlPosition'> {\n image: ThemeSupporting<ImageProps>;\n enableImageBorderRadius?: boolean;\n margins?: ImageCardMargins;\n direction?: ImageCardDirection;\n backgroundColor?: string;\n url?: string;\n urlTitle?: string;\n target?: string;\n}\n\n// sub-block models\nexport type DividerModel = {\n type: SubBlockType.Divider;\n} & DividerProps;\n\nexport type QuoteModel = {\n type: SubBlockType.Quote;\n} & QuoteProps;\n\nexport type LayoutItemModel = {\n type: SubBlockType.LayoutItem;\n} & LayoutItemProps;\n\nexport type BackgroundCardModel = {\n type: SubBlockType.BackgroundCard;\n} & BackgroundCardProps;\n\n/** @deprecated */\nexport type PriceDetailedModel = {\n type: SubBlockType.PriceDetailed;\n} & PriceDetailedProps;\n\nexport type MediaCardModel = {\n type: SubBlockType.MediaCard;\n} & MediaCardProps;\n\nexport type HubspotFormModel = {\n type: SubBlockType.HubspotForm;\n} & HubspotFormProps;\n\nexport type BannerCardModel = {\n type: SubBlockType.BannerCard;\n} & BannerCardProps;\n\nexport type BasicCardModel = {\n type: SubBlockType.BasicCard;\n} & BasicCardProps;\n\nexport type PriceCardModel = {\n type: SubBlockType.PriceCard;\n} & PriceCardProps;\n\nexport type ImageCardModel = {\n type: SubBlockType.ImageCard;\n} & ImageCardProps;\n\nexport type SubBlockModels =\n | DividerModel\n | QuoteModel\n | PriceDetailedModel\n | MediaCardModel\n | BackgroundCardModel\n | HubspotFormModel\n | BannerCardModel\n | BasicCardModel\n | PriceCardModel\n | LayoutItemModel\n | ImageCardModel;\n\nexport type SubBlock = SubBlockModels;\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { HubspotFormProps } from "../../models/index.js";
|
|
3
|
-
type HubspotFormContainerPropsKeys = 'className' | 'formId' | 'formInstanceId' | 'portalId' | 'region' | 'formClassName' | 'createDOMElement';
|
|
3
|
+
type HubspotFormContainerPropsKeys = 'className' | 'formId' | 'formInstanceId' | 'portalId' | 'region' | 'formClassName' | 'createDOMElement' | 'defaultValues';
|
|
4
4
|
type HubspotFormContainerProps = Pick<HubspotFormProps, HubspotFormContainerPropsKeys>;
|
|
5
5
|
declare const HubspotFormContainer: React.ForwardRefExoticComponent<HubspotFormContainerProps & React.RefAttributes<HTMLDivElement>>;
|
|
6
6
|
export default HubspotFormContainer;
|
|
@@ -2,8 +2,9 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { useMount } from "../../hooks/index.js";
|
|
4
4
|
import loadHubspotScript from "./loadHubspotScript.js";
|
|
5
|
+
import { setHubspotDefaultValues } from "./setHubspotDefaultValues.js";
|
|
5
6
|
const HubspotFormContainer = React.forwardRef((props, ref) => {
|
|
6
|
-
const { className, formId, formInstanceId, portalId, region, formClassName, createDOMElement, } = props;
|
|
7
|
+
const { className, formId, formInstanceId, portalId, region, formClassName, createDOMElement, defaultValues, } = props;
|
|
7
8
|
const containerRef = React.useRef(null);
|
|
8
9
|
const hsContainerRef = React.useRef();
|
|
9
10
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
@@ -27,6 +28,9 @@ const HubspotFormContainer = React.forwardRef((props, ref) => {
|
|
|
27
28
|
target: `#${containerId}`,
|
|
28
29
|
cssClass: formClassName,
|
|
29
30
|
formInstanceId,
|
|
31
|
+
onFormReady: defaultValues
|
|
32
|
+
? (form) => setHubspotDefaultValues(form, defaultValues)
|
|
33
|
+
: undefined,
|
|
30
34
|
});
|
|
31
35
|
}
|
|
32
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HubspotFormContainer.js","sourceRoot":"../../../../src","sources":["sub-blocks/HubspotForm/HubspotFormContainer.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAC,QAAQ,EAAC,6BAAoB;AAGrC,OAAO,iBAAiB,+BAA4B;
|
|
1
|
+
{"version":3,"file":"HubspotFormContainer.js","sourceRoot":"../../../../src","sources":["sub-blocks/HubspotForm/HubspotFormContainer.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAC,QAAQ,EAAC,6BAAoB;AAGrC,OAAO,iBAAiB,+BAA4B;AACpD,OAAO,EAAC,uBAAuB,EAAC,qCAAkC;AAclE,MAAM,oBAAoB,GAAG,KAAK,CAAC,UAAU,CACzC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACX,MAAM,EACF,SAAS,EAET,MAAM,EACN,cAAc,EACd,QAAQ,EACR,MAAM,EACN,aAAa,EACb,gBAAgB,EAChB,aAAa,GAChB,GAAG,KAAK,CAAC;IAEV,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,EAAkB,CAAC;IAEtD,oEAAoE;IACpE,KAAK,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,OAAQ,CAAC,CAAC;IAE5D,MAAM,WAAW,GAAG,cAAc;QAC9B,CAAC,CAAC,gBAAgB,MAAM,IAAI,cAAc,EAAE;QAC5C,CAAC,CAAC,gBAAgB,MAAM,EAAE,CAAC;IAE/B,MAAM,UAAU,GAAG,GAAG,EAAE;QACpB,IAAI,YAAY,CAAC,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,gBAAgB,EAAE,CAAC;YACtE,cAAc,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACvD,YAAY,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;YAC7B,cAAc,CAAC,OAAO,CAAC,EAAE,GAAG,WAAW,CAAC;YACxC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,CAAC,gBAAgB,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;YAC9C,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;oBACtB,MAAM;oBACN,QAAQ;oBACR,MAAM;oBACN,MAAM,EAAE,IAAI,WAAW,EAAE;oBACzB,QAAQ,EAAE,aAAa;oBACvB,cAAc;oBACd,WAAW,EAAE,aAAa;wBACtB,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,EAAE,aAAa,CAAC;wBACxD,CAAC,CAAC,SAAS;iBAClB,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC,CAAC;IAEF,QAAQ,CAAC,GAAG,EAAE;QACV,CAAC,KAAK,IAAI,EAAE;YACR,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAChB,MAAM,iBAAiB,EAAE,CAAC;YAC9B,CAAC;YAED,UAAU,EAAE,CAAC;QACjB,CAAC,CAAC,EAAE,CAAC;QAEL,OAAO,GAAG,EAAE;YACR,IAAI,gBAAgB,IAAI,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;gBAC7E,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACrE,CAAC;QACL,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,OAAO,cAAK,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,GAAI,CAAC;AAC7E,CAAC,CACJ,CAAC;AAEF,oBAAoB,CAAC,WAAW,GAAG,sBAAsB,CAAC;AAE1D,eAAe,oBAAoB,CAAC","sourcesContent":["import * as React from 'react';\n\nimport {useMount} from '../../hooks';\nimport {HubspotFormProps} from '../../models';\n\nimport loadHubspotScript from './loadHubspotScript';\nimport {setHubspotDefaultValues} from './setHubspotDefaultValues';\n\ntype HubspotFormContainerPropsKeys =\n | 'className'\n | 'formId'\n | 'formInstanceId'\n | 'portalId'\n | 'region'\n | 'formClassName'\n | 'createDOMElement'\n | 'defaultValues';\n\ntype HubspotFormContainerProps = Pick<HubspotFormProps, HubspotFormContainerPropsKeys>;\n\nconst HubspotFormContainer = React.forwardRef<HTMLDivElement, HubspotFormContainerProps>(\n (props, ref) => {\n const {\n className,\n\n formId,\n formInstanceId,\n portalId,\n region,\n formClassName,\n createDOMElement,\n defaultValues,\n } = props;\n\n const containerRef = React.useRef<HTMLDivElement>(null);\n const hsContainerRef = React.useRef<HTMLDivElement>();\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n React.useImperativeHandle(ref, () => containerRef.current!);\n\n const containerId = formInstanceId\n ? `hubspot-form-${formId}-${formInstanceId}`\n : `hubspot-form-${formId}`;\n\n const createForm = () => {\n if (containerRef.current && !hsContainerRef.current && createDOMElement) {\n hsContainerRef.current = document.createElement('div');\n containerRef.current.id = '';\n hsContainerRef.current.id = containerId;\n containerRef.current.appendChild(hsContainerRef.current);\n }\n\n if (!createDOMElement || hsContainerRef.current) {\n if (window.hbspt) {\n window.hbspt.forms.create({\n region,\n portalId,\n formId,\n target: `#${containerId}`,\n cssClass: formClassName,\n formInstanceId,\n onFormReady: defaultValues\n ? (form) => setHubspotDefaultValues(form, defaultValues)\n : undefined,\n });\n }\n }\n };\n\n useMount(() => {\n (async () => {\n if (!window.hbspt) {\n await loadHubspotScript();\n }\n\n createForm();\n })();\n\n return () => {\n if (createDOMElement && containerRef.current && containerRef.current.lastChild) {\n containerRef.current.removeChild(containerRef.current.lastChild);\n }\n };\n });\n\n return <div className={className} id={containerId} ref={containerRef} />;\n },\n);\n\nHubspotFormContainer.displayName = 'HubspotFormContainer';\n\nexport default HubspotFormContainer;\n"]}
|
|
@@ -11,7 +11,7 @@ const b = block('hubspot-form');
|
|
|
11
11
|
const HubspotForm = React.forwardRef((props, ref) => {
|
|
12
12
|
const { className, theme: themeProp, isMobile: isMobileProp, formId, formInstanceId, portalId, region, formClassName,
|
|
13
13
|
// hubspotEvents, // TODO: decide how to handle them
|
|
14
|
-
analyticsEvents, onBeforeSubmit, onSubmit, onBeforeLoad, onLoad, createDOMElement, onSubmitError, } = props;
|
|
14
|
+
analyticsEvents, onBeforeSubmit, onSubmit, onBeforeLoad, onLoad, createDOMElement, onSubmitError, defaultValues, } = props;
|
|
15
15
|
const themeValue = useTheme();
|
|
16
16
|
const handleAnalytics = useAnalytics(DefaultEventNames.HubspotFormSubmit);
|
|
17
17
|
const isMobileValue = React.useContext(MobileContext);
|
|
@@ -36,7 +36,7 @@ const HubspotForm = React.forwardRef((props, ref) => {
|
|
|
36
36
|
onSubmitError,
|
|
37
37
|
]);
|
|
38
38
|
useHandleHubspotEvents(handlers, formId);
|
|
39
|
-
return (_jsx(HubspotFormContainer, { createDOMElement: createDOMElement, className: b({ theme, mobile }, className), formClassName: formClassName, formId: formId, portalId: portalId, formInstanceId: formInstanceId, region: region, ref: ref }, [formClassName, formId, formInstanceId, portalId, region].join()));
|
|
39
|
+
return (_jsx(HubspotFormContainer, { createDOMElement: createDOMElement, className: b({ theme, mobile }, className), formClassName: formClassName, formId: formId, portalId: portalId, formInstanceId: formInstanceId, region: region, defaultValues: defaultValues, ref: ref }, [formClassName, formId, formInstanceId, portalId, region].join()));
|
|
40
40
|
});
|
|
41
41
|
HubspotForm.displayName = 'HubspotForm';
|
|
42
42
|
export default HubspotForm;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../../../../src","sources":["sub-blocks/HubspotForm/index.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAC,aAAa,EAAC,6CAAoC;AAC1D,OAAO,EAAC,QAAQ,EAAC,qCAA4B;AAC7C,OAAO,EAAC,YAAY,EAAE,sBAAsB,EAAC,6BAAoB;AACjE,OAAO,EAAC,iBAAiB,EAAmB,8BAAqB;AACjE,OAAO,EAAuB,KAAK,EAAC,6BAAoB;AAExD,OAAO,oBAAoB,kCAA+B;AAE1D,OAAO,mBAAmB,CAAC;AAE3B,MAAM,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;AAEhC,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAmC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAClF,MAAM,EACF,SAAS,EACT,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,YAAY,EACtB,MAAM,EACN,cAAc,EACd,QAAQ,EACR,MAAM,EACN,aAAa;IACb,oDAAoD;IACpD,eAAe,EACf,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,MAAM,EACN,gBAAgB,EAChB,aAAa,GAChB,GAAG,KAAK,CAAC;IAEV,MAAM,UAAU,GAAG,QAAQ,EAAE,CAAC;IAC9B,MAAM,eAAe,GAAG,YAAY,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAC1E,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAEtD,MAAM,KAAK,GAAG,SAAS,IAAI,UAAU,CAAC;IACtC,MAAM,MAAM,GAAG,YAAY,IAAI,aAAa,CAAC;IAE7C,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAC1B,GAAG,EAAE,CAAC,CAAC;QACH,YAAY;QACZ,cAAc;QACd,MAAM;QACN,aAAa;QACb,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;YAChB,eAAe,CAAC,eAAe,CAAC,CAAC;YACjC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;KACJ,CAAC,EACF;QACI,YAAY;QACZ,cAAc;QACd,MAAM;QACN,eAAe;QACf,eAAe;QACf,QAAQ;QACR,aAAa;KAChB,CACJ,CAAC;IAEF,sBAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACzC,OAAO,CACH,KAAC,oBAAoB,IACjB,gBAAgB,EAAE,gBAAgB,EAElC,SAAS,EAAE,CAAC,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,SAAS,CAAC,EACxC,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../../../../src","sources":["sub-blocks/HubspotForm/index.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAC,aAAa,EAAC,6CAAoC;AAC1D,OAAO,EAAC,QAAQ,EAAC,qCAA4B;AAC7C,OAAO,EAAC,YAAY,EAAE,sBAAsB,EAAC,6BAAoB;AACjE,OAAO,EAAC,iBAAiB,EAAmB,8BAAqB;AACjE,OAAO,EAAuB,KAAK,EAAC,6BAAoB;AAExD,OAAO,oBAAoB,kCAA+B;AAE1D,OAAO,mBAAmB,CAAC;AAE3B,MAAM,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;AAEhC,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAmC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAClF,MAAM,EACF,SAAS,EACT,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,YAAY,EACtB,MAAM,EACN,cAAc,EACd,QAAQ,EACR,MAAM,EACN,aAAa;IACb,oDAAoD;IACpD,eAAe,EACf,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,MAAM,EACN,gBAAgB,EAChB,aAAa,EACb,aAAa,GAChB,GAAG,KAAK,CAAC;IAEV,MAAM,UAAU,GAAG,QAAQ,EAAE,CAAC;IAC9B,MAAM,eAAe,GAAG,YAAY,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAC1E,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAEtD,MAAM,KAAK,GAAG,SAAS,IAAI,UAAU,CAAC;IACtC,MAAM,MAAM,GAAG,YAAY,IAAI,aAAa,CAAC;IAE7C,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAC1B,GAAG,EAAE,CAAC,CAAC;QACH,YAAY;QACZ,cAAc;QACd,MAAM;QACN,aAAa;QACb,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;YAChB,eAAe,CAAC,eAAe,CAAC,CAAC;YACjC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;KACJ,CAAC,EACF;QACI,YAAY;QACZ,cAAc;QACd,MAAM;QACN,eAAe;QACf,eAAe;QACf,QAAQ;QACR,aAAa;KAChB,CACJ,CAAC;IAEF,sBAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACzC,OAAO,CACH,KAAC,oBAAoB,IACjB,gBAAgB,EAAE,gBAAgB,EAElC,SAAS,EAAE,CAAC,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,SAAS,CAAC,EACxC,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,aAAa,EAC5B,GAAG,EAAE,GAAG,IARH,CAAC,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CASvE,CACL,CAAC;AACN,CAAC,CAAC,CAAC;AAEH,WAAW,CAAC,WAAW,GAAG,aAAa,CAAC;AAExC,eAAe,WAAW,CAAC","sourcesContent":["import * as React from 'react';\n\nimport {MobileContext} from '../../context/mobileContext';\nimport {useTheme} from '../../context/theme';\nimport {useAnalytics, useHandleHubspotEvents} from '../../hooks';\nimport {DefaultEventNames, HubspotFormProps} from '../../models';\nimport {HubspotEventHandlers, block} from '../../utils';\n\nimport HubspotFormContainer from './HubspotFormContainer';\n\nimport './HubspotForm.scss';\n\nconst b = block('hubspot-form');\n\nconst HubspotForm = React.forwardRef<HTMLDivElement, HubspotFormProps>((props, ref) => {\n const {\n className,\n theme: themeProp,\n isMobile: isMobileProp,\n formId,\n formInstanceId,\n portalId,\n region,\n formClassName,\n // hubspotEvents, // TODO: decide how to handle them\n analyticsEvents,\n onBeforeSubmit,\n onSubmit,\n onBeforeLoad,\n onLoad,\n createDOMElement,\n onSubmitError,\n defaultValues,\n } = props;\n\n const themeValue = useTheme();\n const handleAnalytics = useAnalytics(DefaultEventNames.HubspotFormSubmit);\n const isMobileValue = React.useContext(MobileContext);\n\n const theme = themeProp ?? themeValue;\n const mobile = isMobileProp ?? isMobileValue;\n\n const handlers = React.useMemo<HubspotEventHandlers>(\n () => ({\n onBeforeLoad,\n onBeforeSubmit,\n onLoad,\n onSubmitError,\n onSubmit: (event) => {\n handleAnalytics(analyticsEvents);\n onSubmit?.(event);\n },\n }),\n [\n onBeforeLoad,\n onBeforeSubmit,\n onLoad,\n handleAnalytics,\n analyticsEvents,\n onSubmit,\n onSubmitError,\n ],\n );\n\n useHandleHubspotEvents(handlers, formId);\n return (\n <HubspotFormContainer\n createDOMElement={createDOMElement}\n key={[formClassName, formId, formInstanceId, portalId, region].join()}\n className={b({theme, mobile}, className)}\n formClassName={formClassName}\n formId={formId}\n portalId={portalId}\n formInstanceId={formInstanceId}\n region={region}\n defaultValues={defaultValues}\n ref={ref}\n />\n );\n});\n\nHubspotForm.displayName = 'HubspotForm';\n\nexport default HubspotForm;\n"]}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
const setInputValue = (inputs, value) => {
|
|
2
|
+
const input = inputs[0];
|
|
3
|
+
const type = input.type;
|
|
4
|
+
switch (type) {
|
|
5
|
+
case 'checkbox':
|
|
6
|
+
input.checked = Boolean(value);
|
|
7
|
+
return;
|
|
8
|
+
case 'radio':
|
|
9
|
+
inputs.forEach((radio) => {
|
|
10
|
+
if (radio.value === String(value)) {
|
|
11
|
+
input.checked = true;
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
return;
|
|
15
|
+
default:
|
|
16
|
+
input.value = String(value);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
const setSelectValue = (select, value) => {
|
|
20
|
+
const options = Array.from(select.querySelectorAll('option'));
|
|
21
|
+
options.forEach((option) => {
|
|
22
|
+
if (option.value === String(value)) {
|
|
23
|
+
option.selected = true;
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
const setValue = (elements, value) => {
|
|
28
|
+
const element = elements[0];
|
|
29
|
+
switch (element.tagName.toLowerCase()) {
|
|
30
|
+
case 'input':
|
|
31
|
+
setInputValue(elements, value);
|
|
32
|
+
return;
|
|
33
|
+
case 'textarea':
|
|
34
|
+
element.value = String(value);
|
|
35
|
+
return;
|
|
36
|
+
case 'select':
|
|
37
|
+
setSelectValue(element, value);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
export const setHubspotDefaultValues = (form, defaultValues) => {
|
|
42
|
+
Object.entries(defaultValues).forEach(([name, value]) => {
|
|
43
|
+
const inputs = Array.from(form.querySelectorAll(`[name="${name}"]`));
|
|
44
|
+
setValue(inputs, value);
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=setHubspotDefaultValues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setHubspotDefaultValues.js","sourceRoot":"../../../../src","sources":["sub-blocks/HubspotForm/setHubspotDefaultValues.ts"],"names":[],"mappings":"AAOA,MAAM,aAAa,GAAG,CAAC,MAA0B,EAAE,KAAwB,EAAE,EAAE;IAC3E,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IAExB,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,UAAU;YACX,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;YAC/B,OAAO;QACX,KAAK,OAAO;YACR,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBACrB,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;oBAChC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;gBACzB,CAAC;YACL,CAAC,CAAC,CAAC;YACH,OAAO;QACX;YACI,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,MAAyB,EAAE,KAAwB,EAAE,EAAE;IAC3E,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE9D,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACvB,IAAI,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC3B,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,QAAmB,EAAE,KAAwB,EAAE,EAAE;IAC/D,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE5B,QAAQ,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;QACpC,KAAK,OAAO;YACR,aAAa,CAAC,QAA8B,EAAE,KAAK,CAAC,CAAC;YACrD,OAAO;QACX,KAAK,UAAU;YACV,OAA+B,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YACvD,OAAO;QACX,KAAK,QAAQ;YACT,cAAc,CAAC,OAA4B,EAAE,KAAK,CAAC,CAAC;YACpD,OAAO;IACf,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACnC,IAAqB,EACrB,aAAuC,EACzC,EAAE;IACA,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;QACpD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC;QACrE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACP,CAAC,CAAC","sourcesContent":["import {HubspotFormDefaultValues} from '../../utils/hubspot';\n\n/* eslint-disable no-not-accumulator-reassign/no-not-accumulator-reassign */\n/* eslint-disable no-param-reassign */\n\ntype HubspotInputValue = HubspotFormDefaultValues[string];\n\nconst setInputValue = (inputs: HTMLInputElement[], value: HubspotInputValue) => {\n const input = inputs[0];\n const type = input.type;\n\n switch (type) {\n case 'checkbox':\n input.checked = Boolean(value);\n return;\n case 'radio':\n inputs.forEach((radio) => {\n if (radio.value === String(value)) {\n input.checked = true;\n }\n });\n return;\n default:\n input.value = String(value);\n }\n};\n\nconst setSelectValue = (select: HTMLSelectElement, value: HubspotInputValue) => {\n const options = Array.from(select.querySelectorAll('option'));\n\n options.forEach((option) => {\n if (option.value === String(value)) {\n option.selected = true;\n }\n });\n};\n\nconst setValue = (elements: Element[], value: HubspotInputValue) => {\n const element = elements[0];\n\n switch (element.tagName.toLowerCase()) {\n case 'input':\n setInputValue(elements as HTMLInputElement[], value);\n return;\n case 'textarea':\n (element as HTMLTextAreaElement).value = String(value);\n return;\n case 'select':\n setSelectValue(element as HTMLSelectElement, value);\n return;\n }\n};\n\nexport const setHubspotDefaultValues = (\n form: HTMLFormElement,\n defaultValues: HubspotFormDefaultValues,\n) => {\n Object.entries(defaultValues).forEach(([name, value]) => {\n const inputs = Array.from(form.querySelectorAll(`[name=\"${name}\"]`));\n setValue(inputs, value);\n });\n};\n"]}
|
|
@@ -5,6 +5,7 @@ export interface HubspotEventData {
|
|
|
5
5
|
id: string;
|
|
6
6
|
data?: unknown;
|
|
7
7
|
}
|
|
8
|
+
export type HubspotFormDefaultValues = Record<string, string | number | boolean>;
|
|
8
9
|
export declare function isHubspotEventData(maybeData: unknown): maybeData is HubspotEventData;
|
|
9
10
|
export interface HubspotEventHandlers {
|
|
10
11
|
onBeforeLoad?: (arg: HubspotEventData) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hubspot.js","sourceRoot":"../../../src","sources":["utils/hubspot.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hubspot.js","sourceRoot":"../../../src","sources":["utils/hubspot.ts"],"names":[],"mappings":"AAiBA,MAAM,UAAU,kBAAkB,CAAC,SAAkB;IACjD,OAAO,CACH,OAAO,SAAS,KAAK,QAAQ;QAC7B,SAAS,KAAK,IAAI;QAClB,MAAM,IAAI,SAAS;QAClB,SAAqC,CAAC,MAAM,CAAC,KAAK,gBAAgB,CACtE,CAAC;AACN,CAAC;AAUD,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAChD,OAAO,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAe,EAAQ,EAAE;QAClD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,OAAO;QACX,CAAC;QAED,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;YACrB,OAAO;QACX,CAAC;QAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO;QACX,CAAC;QAEA,MAAwB,EAAE,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAA8B,EAAE,MAAc;IAC9E,OAAO,CAAC,EAAC,IAAI,EAAe,EAAQ,EAAE;QAClC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,OAAO;QACX,CAAC;QAED,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;YACrB,OAAO;QACX,CAAC;QAED,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;YACrB,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACtB,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC9B,MAAM;YACV,CAAC;YACD,KAAK,aAAa,CAAC,CAAC,CAAC;gBACjB,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;gBACxB,MAAM;YACV,CAAC;YACD,KAAK,cAAc,CAAC,CAAC,CAAC;gBAClB,QAAQ,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC;gBAChC,MAAM;YACV,CAAC;YACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;gBACrB,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC1B,MAAM;YACV,CAAC;YACD,KAAK,aAAa,CAAC,CAAC,CAAC;gBACjB,QAAQ,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC/B,MAAM;YACV,CAAC;YACD;gBACI,MAAM;QACd,CAAC;IACL,CAAC,CAAC;AACN,CAAC","sourcesContent":["export type HubspotEventName =\n | 'onBeforeFormInit'\n | 'onFormReady'\n | 'onFormSubmit'\n | 'onFormSubmitted'\n | 'onFormError'\n | `_${string}`;\n\nexport interface HubspotEventData {\n type: HubspotEventName | string;\n eventName: HubspotEventName;\n id: string;\n data?: unknown;\n}\n\nexport type HubspotFormDefaultValues = Record<string, string | number | boolean>;\n\nexport function isHubspotEventData(maybeData: unknown): maybeData is HubspotEventData {\n return (\n typeof maybeData === 'object' &&\n maybeData !== null &&\n 'type' in maybeData &&\n (maybeData as Record<string, unknown>)['type'] === 'hsFormCallback'\n );\n}\n\nexport interface HubspotEventHandlers {\n onBeforeLoad?: (arg: HubspotEventData) => void;\n onBeforeSubmit?: (arg: HubspotEventData) => void;\n onSubmit?: (arg: HubspotEventData) => void;\n onLoad?: (arg: HubspotEventData) => void;\n onSubmitError?: (arg: HubspotEventData) => void;\n}\n\nexport function loopBackHabspotEvents(formId: string) {\n return ({data, source, origin}: MessageEvent): void => {\n if (!isHubspotEventData(data)) {\n return;\n }\n\n if (data.id !== formId) {\n return;\n }\n\n if (source === window) {\n return;\n }\n\n (source as Window | null)?.postMessage(data, origin);\n };\n}\n\nexport function handleHubspotEvents(handlers: HubspotEventHandlers, formId: string) {\n return ({data}: MessageEvent): void => {\n if (!isHubspotEventData(data)) {\n return;\n }\n\n if (data.id !== formId) {\n return;\n }\n\n switch (data.eventName) {\n case 'onBeforeFormInit': {\n handlers.onBeforeLoad?.(data);\n break;\n }\n case 'onFormReady': {\n handlers.onLoad?.(data);\n break;\n }\n case 'onFormSubmit': {\n handlers.onBeforeSubmit?.(data);\n break;\n }\n case 'onFormSubmitted': {\n handlers.onSubmit?.(data);\n break;\n }\n case 'onFormError': {\n handlers.onSubmitError?.(data);\n break;\n }\n default:\n break;\n }\n };\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ClassNameProps, QuoteType } from '../../models';
|
|
2
2
|
import { ThemeSupporting } from '../../utils';
|
|
3
|
-
import { HubspotEventData, HubspotEventHandlers } from '../../utils/hubspot';
|
|
3
|
+
import { HubspotEventData, HubspotEventHandlers, HubspotFormDefaultValues } from '../../utils/hubspot';
|
|
4
4
|
import { AnalyticsEventsBase } from '../common';
|
|
5
5
|
import { ContentBlockProps } from './blocks';
|
|
6
6
|
import { AuthorItem, ButtonProps, CardBaseProps, CardLayoutProps, ContentTheme, DividerSize, ImageCardMargins, ImageObjectProps, ImageProps, LayoutItemContentMargin, LinkProps, MediaProps, MediaView, PriceDetailedProps, TextTheme, Themable, ThemedImage } from './common';
|
|
@@ -72,6 +72,7 @@ export interface HubspotFormProps extends HubspotEventHandlers, AnalyticsEventsB
|
|
|
72
72
|
onLoad?: (arg: HubspotEventData) => void;
|
|
73
73
|
hubspotEvents?: string[];
|
|
74
74
|
createDOMElement?: boolean;
|
|
75
|
+
defaultValues?: HubspotFormDefaultValues;
|
|
75
76
|
}
|
|
76
77
|
export interface QuoteProps extends Themable, CardBaseProps {
|
|
77
78
|
text?: string;
|
|
@@ -5,6 +5,7 @@ export interface HubspotEventData {
|
|
|
5
5
|
id: string;
|
|
6
6
|
data?: unknown;
|
|
7
7
|
}
|
|
8
|
+
export type HubspotFormDefaultValues = Record<string, string | number | boolean>;
|
|
8
9
|
export declare function isHubspotEventData(maybeData: unknown): maybeData is HubspotEventData;
|
|
9
10
|
export interface HubspotEventHandlers {
|
|
10
11
|
onBeforeLoad?: (arg: HubspotEventData) => void;
|