react-chat-awesome
v1.0.1
Published
Configurable react chat widget
Downloads
18
Maintainers
Readme
react-chat-awesome
Fully configurable and customizable chat component for your React applications.
Advantages
- 100% Customizable
- Props for styles customization
- Lightweight (only react and prop-types as deps)
- Message validation included
- Backend agnostic
- In active development
Comming in new versions:
- emoji picker
- sending files and images
[Demo] Coming soon...
Table of Contents
Installation
The package can be installed via NPM:
npm install react-chat-awesome --saveOr YARN:
yarn add react-chat-awesome --saveExample
import React, { Component } from 'react'
import { ChatAwesome } from 'react-chat-awesome'
export default class App extends Component {
constructor(props) {
super(props);
this.state = {
history: []
}
this.sender = { id: 1 };
this.receiver = { id: 2, imageUrl: 'path/to/source' };
this.onSendMessageClick = this.onSendMessageClick.bind(this);
}
onSendMessageClick(msgText) {
this.setState({ history: [...this.state.history, {
id: +new Date(),
msg: {
type: 'text',
text: msgText
},
userID: this.sender.id
}]})
}
render() {
return (
<div>
<ChatAwesome
history={ this.state.history }
sender={ this.sender }
receiver={ this.receiver }
onSendMessageClick={ this.onSendMessageClick }
/>
</div>
);
}
}
API
ChatAwesome is the only component you need to import.
* - required prop
ChatAwesome props:
|prop | type | description | |-----|--------|---------------| | *sender | object | person who interacts with the UI and types the message.| | *receiver | object | person who receives the messages and send responses to sender | | history | message[] | array of messages | | onSendMessageClick | function | callback function, executes when user send the message | | onMessageChange | function | callback function, executes when user type something | | onChatClose | function | callback on close button click | | onChatOpen | function | callback on open button click | | isOpen | boolean | programatically close/open chat (default false) | showReceiverImageOnMessage | boolean | set if image should be displayed near each receiver message | | sendMessageIcon | string | url for alternative icon | | wrapperStyles | object | | | headerStyles | object | styles for chat header | | sendButtonStyles | object | styles for send button(not icon) | | bodyStyles | object | styles for messages wrapper | | footerStyles | object | styles for wrapper of the input field and chat button | inputStyles | object | styles for input field | | closedChatStyles | object | styles for closed chat button | headerNameStyles | object | styles for receiver name at the header
Interfaces
Sender
{
id: number | string; // required
}Receiver
{
id: number | string; // required
imageUrl: string;
}Message
{
id: number | string;
userID: number | string;
msg: {
type: string;
text: string;
}
}