Getting started with EJ2 TypeScript Chat UI control
22 Jul 20265 minutes to read
This section explains how to create a simple Chat UI control and configure its available functionalities in TypeScript, using Essential® JS 2 quickstart seed repository.
This application is integrated with the
webpack.config.jsconfiguration and uses the latest version of the webpack-cli. It requires Node.jsv14.15.0or higher. For more information about webpack and its features, refer to the webpack documentation.
Prerequisites
Before getting started, ensure the following tools are installed on your machine:
| Tool | Version / Notes |
|---|---|
| Node.js | v14.15.0 or higher |
| npm | Bundled with Node.js |
| Git | Required to clone the quickstart repository |
| Visual Studio Code | Recommended code editor |
You can verify your Node.js and npm versions by running:
node -v
npm -vRegistering the license key
Syncfusion® Essential® JS 2 controls require a valid license key from version 16.2.0.41 onwards. Using the controls without a license key will display a license validation message in the browser console.
Steps to register the license key:
- Sign in to the Syncfusion License Portal and copy your license key.
- Register the key in your
src/app/app.tsfile, before instantiating any Syncfusion control:
import { registerLicense } from '@syncfusion/ej2-base';
registerLicense('YOUR_LICENSE_KEY_HERE');For more details on obtaining and registering a license key, refer to the License Key Generation and License Key Registration documentation.
Setup for local development
Clone the Essential® JS 2 quickstart application project from GitHub using the following command line scripts.
git clone https://github.com/SyncfusionExamples/ej2-quickstart-webpack
cd ej2-quickstart-webpackAdding Syncfusion® TypeScript Chat UI package
Syncfusion® TypeScript (Essential® JS 2) packages are available on the npmjs.com public registry. You can install all Syncfusion® TypeScript (Essential® JS 2) controls in a single @syncfusion/ej2 package or individual packages for each control.
Use the following command to install the @syncfusion/ej2-interactive-chat package:
npm install @syncfusion/ej2-interactive-chat --saveThen, install the remaining dependent npm packages using the following command:
npm installAdding CSS reference
Themes for Syncfusion® Chat UI controls can be applied using CSS files provided through the npm theme package. Install the Fluent 2 theme package using the following command:
npm install @syncfusion/ej2-fluent2-theme --saveThen add the following CSS reference to the src/styles/styles.css file:
@import "../../node_modules/@syncfusion/ej2-fluent2-theme/styles/chat-ui/index.css";Adding Chat UI control
Add the Chat UI control in src/app/app.ts file using the following code.
You can use the messages property to add messages and the user property to configure the current user for the chat.
import { ChatUI, UserModel, MessageModel } from '@syncfusion/ej2-interactive-chat';
import { enableRipple } from '@syncfusion/ej2-base';
enableRipple(true);
let currentUserModel: UserModel = {
id: "user1",
user: "Albert"
};
let michaleUserModel: UserModel = {
id: "user2",
user: "Michale Suyama"
};
let chatMessages: MessageModel[] = [
{
author: currentUserModel,
text: "Hi Michale, are we on track for the deadline?"
},
{
author: michaleUserModel,
text: "Yes, the design phase is complete."
},
{
author: currentUserModel,
text: "I’ll review it and send feedback by today."
}
];
// Initializes the Chat UI control
let chatUI: ChatUI = new ChatUI({
messages: chatMessages,
user: currentUserModel
});
// Render initialized Chat UI.
chatUI.appendTo('#default-chat');<!DOCTYPE html>
<html lang="en">
<head>
<title>EJ2 Chat UI</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="TypeScript Chat UI Control" />
<meta name="author" content="Syncfusion" />
<link href="index.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/34.1.29/ej2-base/styles/tailwind3.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/34.1.29/ej2-inputs/styles/tailwind3.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/34.1.29/ej2-buttons/styles/tailwind3.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/34.1.29/ej2-navigations/styles/tailwind3.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/34.1.29/ej2-popups/styles/tailwind3.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/34.1.29/ej2-interactive-chat/styles/tailwind3.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/34.1.29/ej2-splitbuttons/styles/tailwind3.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.38/system.js"></script>
<script src="systemjs.config.js"></script>
</head>
<body>
<div id='loader'>Loading....</div>
<div id='container' style="height: 380px; width: 450px;">
<div id="default-chat"></div>
</div>
</body>
</html>Run the application
The npm start command compiles the TypeScript source files and starts the webpack development server. Run the following command:
npm startOpen http://localhost:8080 (or the port shown in the terminal) in a browser. You should see a Chat UI rendered with the default layout.