cognitoforms-wordpress/src/edit.tsx

58 lines
1.5 KiB
TypeScript
Raw Normal View History

import * as React from 'react';
import { __ } from '@wordpress/i18n';
import { BlockEditProps } from '@wordpress/blocks';
import { Placeholder, ExternalLink } from '@wordpress/components';
2022-01-14 23:21:40 -05:00
import CogIcon from '@/assets/cogicon';
import SelectDialog from '@/components/select-dialog';
import { BlockAttributes, EmbedMode } from '@/types';
const Edit: React.FC<BlockEditProps<BlockAttributes>> = ( { attributes, setAttributes, className } ) => {
const handleForm = ( form: string ) => {
const formObj = JSON.parse( form );
2022-01-14 23:21:40 -05:00
setAttributes( {
2022-01-14 23:21:40 -05:00
formId: formObj.formId,
seamlessEmbedCode: formObj.embedCodes.Seamless,
iframeEmbedCode: formObj.embedCodes.IFrame,
ampEmbedCode: formObj.embedCodes.Amp,
embedMode: EmbedMode.Seamless,
} );
};
if ( ! attributes.formId ) {
return (
<Placeholder
icon={ CogIcon }
label="Cognito Forms"
className={ className }
instructions={ __(
'Click the button below to choose a form to embed.'
) }
>
<SelectDialog onSelectForm={ handleForm }></SelectDialog>
<br />
<div className="components-placeholder__learn-more">
<ExternalLink
href={ __(
'https://wordpress.org/support/article/embeds/'
) }
>
{ __( 'Learn more about embeds' ) }
</ExternalLink>
</div>
</Placeholder>
);
}
2022-01-14 23:21:40 -05:00
return (
<div
className="cog-wp-embed cog-wp-embed__preview"
dangerouslySetInnerHTML={ { __html: attributes.iframeEmbedCode } } // Must be Iframe embed code as others do not work in Gutenberg
></div>
);
}
export default Edit;