Skip to content

Commit a142913

Browse files
authored
Forms: add new integration list component (#45648)
1 parent 253c068 commit a142913

22 files changed

+934
-898
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Significance: minor
2+
Type: changed
3+
4+
Forms: create new integrations list component.

projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/active-integrations/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import AkismetIcon from '../../../../../icons/akismet';
66
import HostingerReachIcon from '../../../../../icons/hostinger-reach';
77
import MailPoetOrangeIcon from '../../../../../icons/mailpoet-orange';
88
import SalesforceCircleIcon from '../../../../../icons/salesforce-circle';
9-
import { isValidSalesforceOrgId } from '../salesforce-card';
9+
import { isValidSalesforceOrgId } from '../helpers/salesforce';
1010
import './style.scss';
1111

1212
const COLOR_JETPACK = colorStudio.colors[ 'Jetpack Green 40' ];

projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/akismet-card.tsx

Lines changed: 0 additions & 108 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { Button } from '@wordpress/components';
2+
import { __ } from '@wordpress/i18n';
3+
import useCreateForm from '../../../../../dashboard/hooks/use-create-form';
4+
5+
type Props = {
6+
className?: string;
7+
};
8+
9+
export default function CreateSalesforceLeadFormButton( { className }: Props ) {
10+
const { openNewForm } = useCreateForm();
11+
12+
const handleClick = () => {
13+
openNewForm( {
14+
formPattern: 'salesforce-lead-form',
15+
analyticsEvent: () => {
16+
if ( window.jetpackAnalytics?.tracks ) {
17+
window.jetpackAnalytics.tracks.recordEvent( 'jetpack_forms_salesforce_lead_form_click' );
18+
}
19+
},
20+
} );
21+
};
22+
23+
return (
24+
<Button variant="primary" onClick={ handleClick } className={ className }>
25+
{ __( 'Create Salesforce lead form', 'jetpack-forms' ) }
26+
</Button>
27+
);
28+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import requestExternalAccess from '@automattic/request-external-access';
2+
import { Button } from '@wordpress/components';
3+
import { useEffect, useState } from '@wordpress/element';
4+
import { __ } from '@wordpress/i18n';
5+
6+
type Props = {
7+
settingsUrl?: string;
8+
onConnected: () => void;
9+
isConnected: boolean;
10+
};
11+
12+
export default function GoogleDriveConnectButton( {
13+
settingsUrl,
14+
onConnected,
15+
isConnected,
16+
}: Props ) {
17+
const connectingText = __( 'Connecting…', 'jetpack-forms' );
18+
const connectText = __( 'Connect to Google Drive', 'jetpack-forms' );
19+
const [ isToggling, setIsToggling ] = useState( false );
20+
21+
useEffect( () => {
22+
// Reset local UI state when connection flips
23+
setIsToggling( false );
24+
}, [ isConnected ] );
25+
26+
const handleClick = () => {
27+
if ( ! settingsUrl ) return;
28+
setIsToggling( true );
29+
requestExternalAccess( settingsUrl, ( { keyring_id: keyringId } ) => {
30+
if ( keyringId ) {
31+
onConnected();
32+
} else {
33+
setIsToggling( false );
34+
}
35+
} );
36+
};
37+
38+
return (
39+
<Button
40+
variant="secondary"
41+
onClick={ handleClick }
42+
__next40pxDefaultSize={ true }
43+
disabled={ ! settingsUrl || isToggling }
44+
>
45+
{ isToggling ? connectingText : connectText }
46+
</Button>
47+
);
48+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import apiFetch from '@wordpress/api-fetch';
2+
import { Button } from '@wordpress/components';
3+
import { useEffect, useState } from '@wordpress/element';
4+
import { __ } from '@wordpress/i18n';
5+
6+
type Props = {
7+
onDisconnected: () => void;
8+
isConnected: boolean;
9+
};
10+
11+
export default function GoogleDriveDisconnectButton( { onDisconnected, isConnected }: Props ) {
12+
const disconnectingText = __( 'Disconnecting…', 'jetpack-forms' );
13+
const disconnectText = __( 'Disconnect Google Drive', 'jetpack-forms' );
14+
const [ isToggling, setIsToggling ] = useState( false );
15+
16+
useEffect( () => {
17+
setIsToggling( false );
18+
}, [ isConnected ] );
19+
20+
const handleClick = () => {
21+
setIsToggling( true );
22+
apiFetch( { method: 'DELETE', path: '/wp/v2/feedback/integrations/google-drive' } )
23+
.then( ( response: { deleted: boolean } ) => {
24+
if ( response.deleted ) {
25+
onDisconnected();
26+
}
27+
} )
28+
.finally( () => {
29+
setIsToggling( false );
30+
} );
31+
};
32+
33+
return (
34+
<Button variant="link" onClick={ handleClick } disabled={ isToggling }>
35+
{ isToggling ? disconnectingText : disconnectText }
36+
</Button>
37+
);
38+
}

projects/packages/forms/src/blocks/contact-form/components/jetpack-integrations-modal/google-sheets-card.tsx

Lines changed: 0 additions & 140 deletions
This file was deleted.

0 commit comments

Comments
 (0)