Skip to content

Commit a61622d

Browse files
committed
add contact form block
1 parent a81be9e commit a61622d

File tree

10 files changed

+61
-2
lines changed

10 files changed

+61
-2
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { type BlockInterface, createBlockSkeleton } from "@comet/cms-admin";
2+
import { type ContactFormBlockData, type ContactFormBlockInput } from "@src/blocks.generated";
3+
import { FormattedMessage } from "react-intl";
4+
5+
export const ContactFormBlock: BlockInterface<ContactFormBlockData, Record<string, never>, ContactFormBlockInput> = {
6+
...createBlockSkeleton(),
7+
name: "ContactForm",
8+
displayName: <FormattedMessage id="blocks.contactForm" defaultMessage="Contact Form" />,
9+
defaultValues: () => ({}),
10+
};

demo/admin/src/documents/pages/blocks/PageContentBlock.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { AnchorBlock, createBlocksBlock, DamImageBlock } from "@comet/cms-admin";
22
import { AccordionBlock } from "@src/common/blocks/AccordionBlock";
3+
import { ContactFormBlock } from "@src/common/blocks/ContactFormBlock";
34
import { LayoutBlock } from "@src/common/blocks/LayoutBlock";
45
import { MediaGalleryBlock } from "@src/common/blocks/MediaGalleryBlock";
56
import { PageTreeIndexBlock } from "@src/common/blocks/PageTreeIndexBlock";
@@ -50,6 +51,7 @@ export const PageContentBlock = createBlocksBlock({
5051
fullWidthImage: FullWidthImageBlock,
5152
productList: ProductListBlock,
5253
pageTreeIndex: PageTreeIndexBlock,
54+
contactForm: ContactFormBlock,
5355
},
5456
additionalItemFields: {
5557
...userGroupAdditionalItemFields,

demo/api/block-meta.json

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -615,6 +615,11 @@
615615
}
616616
]
617617
},
618+
{
619+
"name": "ContactForm",
620+
"fields": [],
621+
"inputFields": []
622+
},
618623
{
619624
"name": "ContentGroup",
620625
"fields": [
@@ -2106,7 +2111,8 @@
21062111
"textImage": "TextImage",
21072112
"fullWidthImage": "FullWidthImage",
21082113
"productList": "ProductList",
2109-
"pageTreeIndex": "PageTreeIndex"
2114+
"pageTreeIndex": "PageTreeIndex",
2115+
"contactForm": "ContactForm"
21102116
},
21112117
"nullable": false
21122118
},
@@ -2171,7 +2177,8 @@
21712177
"textImage": "TextImage",
21722178
"fullWidthImage": "FullWidthImage",
21732179
"productList": "ProductList",
2174-
"pageTreeIndex": "PageTreeIndex"
2180+
"pageTreeIndex": "PageTreeIndex",
2181+
"contactForm": "ContactForm"
21752182
},
21762183
"nullable": false
21772184
},
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { BlockData, BlockInput, blockInputToData, createBlock } from "@comet/cms-api";
2+
3+
class ContactFormBlockData extends BlockData {}
4+
5+
class ContactFormBlockInput extends BlockInput {
6+
transformToBlockData(): ContactFormBlockData {
7+
return blockInputToData(ContactFormBlockData, this);
8+
}
9+
}
10+
11+
export const ContactFormBlock = createBlock(ContactFormBlockData, ContactFormBlockInput, "ContactForm");

demo/api/src/db/fixtures/fixtures.module.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import { YouTubeVideoBlockFixtureService } from "./generators/blocks/media/youtu
3333
import { AnchorBlockFixtureService } from "./generators/blocks/navigation/anchor-block-fixture.service";
3434
import { CallToActionBlockFixtureService } from "./generators/blocks/navigation/call-to-action-block-fixture.service";
3535
import { CallToActionListBlockFixtureService } from "./generators/blocks/navigation/call-to-action-list-block.service";
36+
import { ContactFormBlockFixtureService } from "./generators/blocks/navigation/contact-form-block-fixture.service";
3637
import { LinkBlockFixtureService } from "./generators/blocks/navigation/link-block-fixture.service";
3738
import { LinkListBlockFixtureService } from "./generators/blocks/navigation/link-list-block-fixture.service";
3839
import { PageTreeIndexBlockFixtureService } from "./generators/blocks/navigation/page-tree-index-block-fixture.service";
@@ -79,6 +80,7 @@ import { VideoFixtureService } from "./generators/video-fixture.service";
7980
CallToActionBlockFixtureService,
8081
CallToActionListBlockFixtureService,
8182
ColumnsBlockFixtureService,
83+
ContactFormBlockFixtureService,
8284
ContentGroupBlockFixtureService,
8385
DamImageBlockFixtureService,
8486
DamVideoBlockFixtureService,
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { ExtractBlockInputFactoryProps } from "@comet/cms-api";
2+
import { Injectable } from "@nestjs/common";
3+
import { ContactFormBlock } from "@src/common/blocks/contact-form.block";
4+
5+
@Injectable()
6+
export class ContactFormBlockFixtureService {
7+
async generateBlockInput(): Promise<ExtractBlockInputFactoryProps<typeof ContactFormBlock>> {
8+
return {};
9+
}
10+
}

demo/api/src/db/fixtures/generators/page-content-block-fixture.service.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { FullWidthImageBlockFixtureService } from "./blocks/media/full-width-ima
1616
import { MediaGalleryBlockFixtureService } from "./blocks/media/media-gallery-block-fixture.service";
1717
import { StandaloneMediaBlockFixtureService } from "./blocks/media/standalone-media-block-fixture.service";
1818
import { AnchorBlockFixtureService } from "./blocks/navigation/anchor-block-fixture.service";
19+
import { ContactFormBlockFixtureService } from "./blocks/navigation/contact-form-block-fixture.service";
1920
import { LinkListBlockFixtureService } from "./blocks/navigation/link-list-block-fixture.service";
2021
import { PageTreeIndexBlockFixtureService } from "./blocks/navigation/page-tree-index-block-fixture.service";
2122
import { StandaloneCallToActionListBlockFixtureService } from "./blocks/navigation/standalone-call-to-action-list-block-fixture.service";
@@ -53,6 +54,7 @@ export class PageContentBlockFixtureService {
5354
private readonly standaloneRichTextBlockFixtureService: StandaloneRichTextBlockFixtureService,
5455
private readonly productListBlockFixtureService: ProductListBlockFixtureService,
5556
private readonly pageTreeIndexBlockFixtureService: PageTreeIndexBlockFixtureService,
57+
private readonly contactFormBlockFixtureService: ContactFormBlockFixtureService,
5658
) {}
5759

5860
async generateBlockInput(blockCategory?: BlockCategory): Promise<ExtractBlockInputFactoryProps<typeof PageContentBlock>> {
@@ -82,6 +84,7 @@ export class PageContentBlockFixtureService {
8284
richtext: ["textAndContent", this.standaloneRichTextBlockFixtureService],
8385
textImage: ["textAndContent", this.textImageBlockFixtureService],
8486
productList: ["textAndContent", this.productListBlockFixtureService],
87+
contactForm: ["textAndContent", this.contactFormBlockFixtureService],
8588
};
8689

8790
const supportedBlocksFixtureGenerators = Object.entries(fixtures)

demo/api/src/documents/pages/blocks/page-content.block.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { AnchorBlock, BaseBlocksBlockItemData, BaseBlocksBlockItemInput, BlockField, createBlocksBlock, DamImageBlock } from "@comet/cms-api";
22
import { AccordionBlock } from "@src/common/blocks/accordion.block";
3+
import { ContactFormBlock } from "@src/common/blocks/contact-form.block";
34
import { MediaGalleryBlock } from "@src/common/blocks/media-gallery.block";
45
import { PageTreeIndexBlock } from "@src/common/blocks/page-tree-index.block";
56
import { SpaceBlock } from "@src/common/blocks/space.block";
@@ -47,6 +48,7 @@ const supportedBlocks = {
4748
fullWidthImage: FullWidthImageBlock,
4849
productList: ProductListBlock,
4950
pageTreeIndex: PageTreeIndexBlock,
51+
contactForm: ContactFormBlock,
5052
};
5153

5254
class BlocksBlockItemData extends BaseBlocksBlockItemData(supportedBlocks) {
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
"use client";
2+
import { type PropsWithData, withPreview } from "@comet/site-nextjs";
3+
import { type ContactFormBlockData } from "@src/blocks.generated";
4+
5+
export const ContactFormBlock = withPreview(
6+
({ data }: PropsWithData<ContactFormBlockData>) => {
7+
return <>Contact Form</>;
8+
},
9+
{ label: "Contact Form" },
10+
);

demo/site/src/documents/pages/blocks/PageContentBlock.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { BlocksBlock, type PropsWithData, type SupportedBlocks } from "@comet/si
33
import { type PageContentBlockData } from "@src/blocks.generated";
44
import { PageContentAccordionBlock } from "@src/common/blocks/AccordionBlock";
55
import { AnchorBlock } from "@src/common/blocks/AnchorBlock";
6+
import { ContactFormBlock } from "@src/common/blocks/ContactFormBlock";
67
import { DamImageBlock } from "@src/common/blocks/DamImageBlock";
78
import { LayoutBlock } from "@src/common/blocks/LayoutBlock";
89
import { PageContentMediaGalleryBlock } from "@src/common/blocks/MediaGalleryBlock";
@@ -48,6 +49,7 @@ const supportedBlocks: SupportedBlocks = {
4849
fullWidthImage: (props) => <FullWidthImageBlock data={props} />,
4950
productList: (props) => <ProductListBlock data={props} />,
5051
pageTreeIndex: (props) => <PageTreeIndexBlock data={props} />,
52+
contactForm: (props) => <ContactFormBlock data={props} />,
5153
};
5254

5355
export const PageContentBlock = ({ data }: PropsWithData<PageContentBlockData>) => {

0 commit comments

Comments
 (0)