> ## Documentation Index
> Fetch the complete documentation index at: https://cometchat-22654f5b-docs-rn-guide-message-privately.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Form Message

> Form Message — CometChat documentation.

## Constructor

| Name          | Type                                                                         | Description                   |
| ------------- | ---------------------------------------------------------------------------- | ----------------------------- |
| receiverId    | string                                                                       | The ID of the receiver        |
| receiverType  | string                                                                       | The type of the receiver      |
| title         | string                                                                       | The title of the form         |
| formFields    | Array\<[Element Entity](/ui-kit/react-native/v4/interactive-element-entity)> | The fields of the form        |
| submitElement | Button Element                                                               | The submit button of the form |

## Class Usage

How to create an instance of the FormMessage class:

<Tabs>
  <Tab title="TypeScript">
    ```ts theme={null}
    // Create an instance of APIAction
    let apiAction = new APIAction("https://example.com/api", "POST");

    // Create an instance of ButtonElement
    let submitButton = new ButtonElement("1", apiAction, "Submit");

    // Create an instance of TextInput
    let nameInput = new TextInput("1", "Please enter your name");
    // Create a new instance of FormMessage

    let formMessage = new FormMessage(
      "receiverId",
      CometChat.RECEIVER_TYPE.USER,
      "Title",
      [nameInput],
      submitButton
    );
    ```
  </Tab>
</Tabs>

## Key Properties and Methods

### Goal Completion Text

The setGoalCompletionText() method sets the goal completion text of the form.

<Tabs>
  <Tab title="TypeScript">
    ```ts theme={null}
    let formMessage = new FormMessage(
      "receiverId",
      CometChat.RECEIVER_TYPE.USER,
      "Title",
      [nameInput],
      submitButton
    );
    formMessage.setGoalCompletionText("Goal completed");
    ```
  </Tab>
</Tabs>

## Example

Below is an example that showcases the creation and manipulation of an instance of FormMessage:

<Tabs>
  <Tab title="TypeScript">
    ```ts theme={null}
    // Create an instance of APIAction

    let apiAction = new APIAction("https://example.com/api", "POST");

    // Create an instance of ButtonElement

    let submitButton = new ButtonElement("1", apiAction, "Submit");

    // Create a new instance of FormMessage

    let formMessage = new FormMessage(
      "receiverId",
      CometChat.RECEIVER_TYPE.USER,
      "customType",
      "Title",
      [],
      submitButton
    );

    formMessage.setGoalCompletionText("Goal completed");
    ```
  </Tab>
</Tabs>

In this example, a new instance of the FormMessage class is created. The title, form fields, submit element, and goal completion text are retrieved, updated, and retrieved again. Then a new FormMessage instance is made from a JSON object, and the title is retrieved and logged.
