Skip to main content

syncfusion-javascript-chat-ui

Implement the Syncfusion Javascript Chat UI control using Javascript (ej2-interactive-chat). Use this skill when the user mentions chat UI, chat interface, conversational UI, messaging interface, chat applications, messaging systems, customer support chat, AI chatbots, or any real-time conversation features. Provides comprehensive guidance on messages, typing indicators, file attachments, @mentions, suggestions, header/footer customization, templates, load-on-demand, message toolbars, RTL support, localization, accessibility features, and complete chat interface implementations with working code examples.

Datos de origen

Repositorio
syncfusion/javascript-ui-controls-skills
Última actividad en el origen
21 de julio de 2026 a las 05:08
Idioma detectado de SKILL.md
inglés
Estrellas
0
Forks
0

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Explorador de archivos
14 archivos

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
syncfusion-javascript-chat-ui
description
Implement the Syncfusion Javascript Chat UI control using Javascript (ej2-interactive-chat). Use this skill when the user mentions chat UI, chat interface, conversational UI, messaging interface, chat applications, messaging systems, customer support chat, AI chatbots, or any real-time conversation features. Provides comprehensive guidance on messages, typing indicators, file attachments, @mentions, suggestions, header/footer customization, templates, load-on-demand, message toolbars, RTL support, localization, accessibility features, and complete chat interface implementations with working code examples.
metadata
{"author":"Syncfusion Inc","version":"34.1.29"}
# Implementing Syncfusion TypeScript Chat UI ## Overview The Chat UI component provides a modern, feature-rich interface for building conversational applications including customer support chat, AI chatbots, messaging systems, and collaborative communication tools. The Syncfusion Chat UI (`ChatUI`) control is from the `@syncfusion/ej2-interactive-chat` package that provides: - **Message Management** - Display, send, and manage chat messages with rich content - **User Differentiation** - Visual distinction between current user and other participants - **Real-time Indicators** - Typing indicators for active participants - **File Attachments** - Upload and display files, images, and documents in messages - **Smart Features** - @mentions, quick reply suggestions, message replies - **Customization** - Templates for messages, empty states, headers, footers - **Accessibility** - Keyboard navigation, ARIA support, RTL layout - **Message Toolbar** - Per-message actions (Copy, Reply, Pin, Delete) - **Load on Demand** - Lazy loading for large conversation histories **Package:** `@syncfusion/ej2-interactive-chat` **Dependencies:** ej2-base, ej2-navigations, ej2-inputs, ej2-buttons, ej2-dropdowns, ej2-popups --- ## Documentation and Navigation Guide ### Getting Started 📄 **Read:** [references/getting-started.md](references/getting-started.md) - Package installation - CSS imports for themes (material, bootstrap, fabric, etc.) - Basic Chat UI initialization - UserModel configuration (current user and participants) - MessageModel structure for initial messages - Component dimensions (width, height) - created event and component lifecycle ### Messages Configuration 📄 **Read:** [references/messages.md](references/messages.md) - MessageModel properties (id, text, author, timestamp, status) - messages property - initial message collection - Message status indicators (sent, received, read) - Message replies (replyTo, MessageReplyModel) - Message flags (isForwarded, isPinned) - Auto-scroll behavior (autoScrollToBottom) - Message grouping by sender - Mentions in messages (mentionUsers array) - Attached files in messages ### Header & Footer Configuration 📄 **Read:** [references/header-footer.md](references/header-footer.md) - Show/hide header and footer (showHeader, showFooter) - Header text and icon (headerText, headerIconCss) - Header toolbar configuration (headerToolbar, ToolbarSettingsModel) - Toolbar items setup (ToolbarItemModel with text, icon, alignment, tooltip) - Toolbar item click events (itemClicked) - Footer placeholder text customization - Footer template for custom layouts ### Typing Indicator 📄 **Read:** [references/typing-indicator.md](references/typing-indicator.md) - Show/hide typing indicator (typingUsers property) - Dynamic typing user updates (UserModel array) - Multiple users typing scenarios - Custom typing indicator template (typingUsersTemplate) - userTyping event (isTyping, message, user) ### Templates & Customization 📄 **Read:** [references/templates.md](references/templates.md) - Empty chat template (emptyChatTemplate) - Message template (messageTemplate) with context - Typing users template (typingUsersTemplate) - Time break template (timeBreakTemplate) - Suggestion template (suggestionTemplate) - Footer template (footerTemplate) - Template context and data binding patterns ### Timebreak & Timestamp 📄 **Read:** [references/timebreak-timestamp.md](references/timebreak-timestamp.md) - Show time breaks (showTimeBreak) for date-based grouping - Time break template customization - Show timestamps (showTimeStamp) per message - Global timestamp format (timeStampFormat) - Per-message timestamp format override - Date/time formatting patterns - Culture-based formatting ### File Attachments 📄 **Read:** [references/file-attachments.md](references/file-attachments.md) - Enable attachments (enableAttachments) - Attachment settings (attachmentSettings, FileAttachmentSettingsModel) - Server upload configuration (saveUrl, removeUrl) - Save format options (Base64 vs Blob) - File type restrictions (allowedFileTypes) - File size limits (maxFileSize) - Maximum attachment count (maximumCount) - Drag and drop support (enableDragAndDrop) - Custom attachment templates (attachmentTemplate, previewTemplate) - Attachment events (click, upload, success, failure, removed) ### @Mention Integration 📄 **Read:** [references/mention.md](references/mention.md) - Mention trigger character (mentionTriggerChar, default '@') - Mention user list (mentionUsers property) - UserModel configuration for mentions - Mention popup filtering - mentionSelect event and cancellation - Mention data in messages - Custom mention handling ### Suggestions 📄 **Read:** [references/suggestions.md](references/suggestions.md) - Quick reply suggestions (suggestions property) - Suggestion template customization (suggestionTemplate) - Displaying suggestions above input - Suggestion click behavior - Dynamic suggestion updates ### Load on Demand 📄 **Read:** [references/load-on-demand.md](references/load-on-demand.md) - Enable lazy loading (loadOnDemand property) - Scroll-triggered message loading - Performance optimization for large conversations - Pagination patterns - Adding older messages programmatically ### Methods 📄 **Read:** [references/methods.md](references/methods.md) - addMessage() - add string or MessageModel - updateMessage() - modify existing messages - scrollToBottom() - scroll to latest message - scrollToMessage() - scroll to specific message by ID - focus() - set focus on input textarea - refresh() and dataBind() for updates - Other component methods ### Events 📄 **Read:** [references/events.md](references/events.md) - created - component initialization - messageSend - before sending message (with cancellation) - userTyping - typing status updates - mentionSelect - mention selection handling - itemClicked - toolbar item clicks (header and message toolbars) - Attachment events (click, beforeUpload, uploadSuccess, uploadFailure, removed) - Event handling patterns ### Message Toolbar & Appearance 📄 **Read:** [references/message-toolbar-appearance.md](references/message-toolbar-appearance.md) - Message toolbar settings (messageToolbarSettings) - Per-message toolbar items (Copy, Reply, Pin, Delete) - Custom toolbar items - Message toolbar click events - Compact mode (enableCompactMode) - left-align all messages - CSS customization (cssClass) - Theme integration - RTL support (enableRtl) - Localization (locale) - Persistence (enablePersistence) - Accessibility features --- ## Quick Start ### Basic Chat UI Setup ```typescript import { ChatUI, UserModel, MessageModel } from '@syncfusion/ej2-interactive-chat'; import { enableRipple } from '@syncfusion/ej2-base'; enableRipple(true); // Define current user let currentUser: UserModel = { id: "user1", user: "Albert", avatarUrl: "https://example.com/avatar1.png" }; // Define other participant let participantUser: UserModel = { id: "user2", user: "Michale Suyama", avatarUrl: "https://example.com/avatar2.png" }; // Initial messages let chatMessages: MessageModel[] = [ { author: currentUser, text: "Hi Michale, are we on track for the deadline?" }, { author: participantUser, text: "Yes, the design phase is complete." }, { author: currentUser, text: "Great! I'll review it and send feedback by today." } ]; // Initialize Chat UI let chatUI: ChatUI = new ChatUI({ user: currentUser, messages: chatMessages, headerText: 'Michale Suyama', showTimeStamp: true, autoScrollToBottom: true }); // Render chatUI.appendTo('#chatUI'); ``` ### HTML Structure ```html <!DOCTYPE html> <html lang="en"> <head> <title>Chat UI Example</title> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <!-- CSS imports --> <link href="https://cdn.syncfusion.com/ej2/32.1.19/fluent2.css" rel="stylesheet" /> </head> <body> <div class="chatui-container" style="height: 500px; width: 400px;"> <div id="chatUI"></div> </div> </body> </html> ``` ### CSS Imports (via npm) ```css @import "../../node_modules/@syncfusion/ej2-fluent2-theme/styles/chat-ui/index.css"; ``` --- ## Common Patterns ### Add a New Message Programmatically ```typescript // Add as string (uses current user) chatUI.addMessage("This is a new message"); // Add as MessageModel (any user) chatUI.addMessage({ text: "Response from bot", author: botUser, timestamp: new Date() }); ``` ### Handle Message Send Event ```typescript let chatUI: ChatUI = new ChatUI({ user: currentUser, messageSend: (args: MessageSendEventArgs) => { console.log("Message being sent:", args.message.text); // Cancel send if needed if (args.message.text.trim() === '') { args.cancel = true; } // Send to server/API sendToServer(args.message); } }); ``` ### Show Typing Indicator ```typescript // Show user is typing chatUI.typingUsers = [participantUser]; // Hide typing indicator (after message received) chatUI.typingUsers = []; ``` ### Enable File Attachments with Upload ```typescript let chatUI: ChatUI = new ChatUI({ user: currentUser, enableAttachments: true, attachmentSettings: { saveUrl: 'https://your-server.com/api/upload', removeUrl: 'https://your-server.com/api/remove', allowedFileTypes: '.jpg,.png,.pdf,.docx', maxFileSize: 5242880, // 5MB in bytes maximumCount: 3 }, attachmentUploadSuccess: (args) => { console.log("File uploaded successfully:", args.file.name); } }); ``` ### Add @Mention Support ```typescript let mentionableUsers: UserModel[] = [ { id: "user1", user: "Albert" }, { id: "user2", user: "Michale" }, { id: "user3", user: "Janet" } ]; let chatUI: ChatUI = new ChatUI({ user: currentUser, mentionTriggerChar: '@', mentionUsers: mentionableUsers, mentionSelect: (args: MentionSelectEventArgs) => { console.log("Mentioned user:", args.itemData); } }); ``` ### Update Existing Message ```typescript // Update message content chatUI.updateMessage({ text: "Updated message content", author: currentUser }, "message-id-123"); ``` ### Scroll to Specific Message ```typescript // Scroll to bottom (latest message) chatUI.scrollToBottom(); // Scroll to specific message by ID chatUI.scrollToMessage("message-id-456"); ``` --- ## Key Properties Summary | Property | Type | Description | |----------|------|-------------| | `user` | UserModel | Current user interacting with the chat | | `messages` | MessageModel[] | Collection of chat messages | | `showHeader` | boolean | Show/hide header (default: true) | | `showFooter` | boolean | Show/hide footer (default: true) | | `headerText` | string | Text displayed in header | | `placeholder` | string | Input placeholder text | | `typingUsers` | UserModel[] | Users currently typing | | `showTimeStamp` | boolean | Show message timestamps (default: true) | | `showTimeBreak` | boolean | Group messages by date (default: false) | | `autoScrollToBottom` | boolean | Auto-scroll on new message (default: false) | | `enableAttachments` | boolean | Enable file attachments (default: false) | | `attachmentSettings` | FileAttachmentSettingsModel | File upload configuration | | `mentionTriggerChar` | string | Character to trigger mentions (default: '@') | | `mentionUsers` | UserModel[] | Users available for @mention | | `suggestions` | string[] | Quick reply suggestions | | `loadOnDemand` | boolean | Lazy load messages (default: false) | | `enableCompactMode` | boolean | Left-align all messages (default: false) | | `messageToolbarSettings` | MessageToolbarSettingsModel | Per-message toolbar config | | `headerToolbar` | ToolbarSettingsModel | Header toolbar config | | `width` | string \| number | Component width (default: '100%') | | `height` | string \| number | Component height (default: '100%') | | `cssClass` | string | Custom CSS classes | | `enableRtl` | boolean | Right-to-left layout (default: false) | | `locale` | string | Localization culture | --- ## Common Use Cases ### Customer Support Chat - Real-time agent-customer conversations - Typing indicators for agent availability - File attachments for screenshots/documents - Message status (sent, delivered, read) - Quick reply suggestions for common responses ### AI Chatbot Interface - User-bot message differentiation - Typing indicator during AI processing - Suggested responses and quick actions - Message templates for rich responses - Empty state with welcome message ### Team Collaboration Tool - @mention team members - Message replies and threading - Pin important messages - File sharing with preview - Load on demand for long conversations ### Live Help Widget - Compact mode for embedded widget - Custom header with agent info - Footer with typing status - Auto-scroll to latest message - Minimize/maximize functionality ### Documentation Q&A - Question-answer format with clear user distinction - Code snippet attachments - Time breaks for conversation sessions - Message toolbar with copy functionality - Search and scroll to specific messages
Ver en GitHub