PluginProbe
HubSpot All-In-One Marketing – Forms, Popups, Live Chat / 11.3.65
HubSpot All-In-One Marketing – Forms, Popups, Live Chat v11.3.65
11.3.75 11.3.73 11.3.71 11.3.70 11.3.69 11.3.64 11.3.65 11.3.62 11.3.61 11.3.56 11.3.58 11.0.31 11.0.52 11.0.54 11.0.56 11.0.58 11.0.7 11.1.10 11.1.11 11.1.13 11.1.14 11.1.15 11.1.2 11.1.20 11.1.21 All 73 releases
leadin / scripts / shared / Form / FormEdit.tsx

FormEdit.tsx in HubSpot All-In-One Marketing – Forms, Popups, Live Chat 11.3.65, at scripts/shared/Form/FormEdit.tsx

105 lines 2.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import React, { Fragment, useEffect } from 'react';
2 import { portalId } from '../../constants/leadinConfig';
3 import UISpacer from '../UIComponents/UISpacer';
4 import PreviewForm from './PreviewForm';
5 import FormSelect from './FormSelect';
6 import { IFormBlockProps } from '../../gutenberg/FormBlock/registerFormBlock';
7 import {
8 usePostBackgroundMessage,
9 BackgroudAppContext,
10 useBackgroundAppContext,
11 } from '../../iframe/useBackgroundApp';
12 import { ProxyMessages } from '../../iframe/integratedMessages';
13 import LoadingBlock from '../Common/LoadingBlock';
14 import { useGetEmbedder } from '../../utils/useGetEmbedder';
15
16 interface IFormEditProps extends IFormBlockProps {
17 preview: boolean;
18 origin: 'gutenberg' | 'elementor';
19 fullSiteEditor?: boolean;
20 }
21
22 function FormEdit({
23 attributes,
24 isSelected,
25 setAttributes,
26 preview = true,
27 origin = 'gutenberg',
28 fullSiteEditor,
29 }: IFormEditProps) {
30 const { formId, formName, embedVersion } = attributes;
31 const formSelected = portalId && formId;
32
33 const isBackgroundAppReady = useBackgroundAppContext();
34 const monitorFormPreviewRender = usePostBackgroundMessage();
35
36 const handleChange = (selectedForm: {
37 value: string;
38 label: string;
39 embedVersion?: string;
40 }) => {
41 setAttributes({
42 portalId,
43 formId: selectedForm.value,
44 formName: selectedForm.label,
45 embedVersion: selectedForm.embedVersion,
46 });
47 };
48
49 useEffect(() => {
50 monitorFormPreviewRender({
51 key: ProxyMessages.TrackFormPreviewRender,
52 payload: {
53 origin,
54 },
55 });
56 }, [origin]);
57
58 return !isBackgroundAppReady ? (
59 <LoadingBlock />
60 ) : (
61 <Fragment>
62 {(isSelected || !formSelected) && (
63 <FormSelect
64 formId={formId}
65 formName={formName}
66 handleChange={handleChange}
67 origin={origin}
68 embedVersion={embedVersion}
69 />
70 )}
71 {formSelected && (
72 <Fragment>
73 {isSelected && <UISpacer />}
74 {preview && (
75 <PreviewForm
76 portalId={portalId}
77 formId={formId}
78 fullSiteEditor={fullSiteEditor}
79 embedVersion={embedVersion}
80 />
81 )}
82 </Fragment>
83 )}
84 </Fragment>
85 );
86 }
87
88 export default function FormEditContainer(props: IFormEditProps) {
89 const { embedder, errorElement, isLoading } = useGetEmbedder();
90
91 if (errorElement) {
92 return errorElement;
93 }
94
95 if (isLoading) {
96 return <LoadingBlock />;
97 }
98
99 return (
100 <BackgroudAppContext.Provider value={embedder}>
101 <FormEdit {...props} />
102 </BackgroudAppContext.Provider>
103 );
104 }
105