UNPKG

react-gifted-chat

Version:
130 lines (106 loc) 5.67 kB
# React Gifted Chat - [Github](https://github.com/batuhansahan/react-gifted-chat) React implementation forked and edited from react-native-gifted-chat ![](https://i.ibb.co/gvXX0L4/example.png) # Installation - Using [npm](https://www.npmjs.com/#getting-started): `npm install react-gifted-chat --save` - Using [Yarn](https://yarnpkg.com/): `yarn add react-gifted-chat` ## Example ```jsx import { GiftedChat } from 'react-gifted-chat'; class Example extends React.Component { state = { messages: [], }; componentWillMount() { this.setState({ messages: [ { _id: 1, text: 'Hello developer', createdAt: new Date(), user: { _id: 2, name: 'React Native', avatar: 'https://facebook.github.io/react/img/logo_og.png', }, }, ], }); } onSend(messages = []) { this.setState((previousState) => ({ messages: GiftedChat.append(previousState.messages, messages), })); } render() { return ( <GiftedChat messages={this.state.messages} onSend={(messages) => this.onSend(messages)} user={{ _id: 1, }} /> ); } } ``` ## Message object e.g. ```js { _id: 1, text: 'My message', createdAt: new Date(Date.UTC(2016, 5, 11, 17, 20, 0)), user: { _id: 2, name: 'React Native', avatar: 'https://facebook.github.io/react/img/logo_og.png', }, image: 'https://facebook.github.io/react/img/logo_og.png', // Any additional custom parameters are passed through } ``` ## Props - **`messages`** _(Array)_ - Messages to display - **`messageIdGenerator`** _(Function)_ - Generate an id for new messages. Defaults to UUID v4, generated by [uuid](https://github.com/kelektiv/node-uuid) - **`user`** _(Object)_ - User sending the messages: `{ _id, name, avatar }` - **`onSend`** _(Function)_ - Callback when sending a message - **`locale`** _(String)_ - Locale to localize the dates - **`isAnimated`** _(Bool)_ - Animates the view when the keyboard appears - **`loadEarlier`** _(Bool)_ - Enables the "Load earlier messages" button - **`onLoadEarlier`** _(Function)_ - Callback when loading earlier messages - **`isLoadingEarlier`** _(Bool)_ - Display an `ActivityIndicator` when loading earlier messages - **`renderLoading`** _(Function)_ - Render a loading view when initializing - **`renderLoadEarlier`** _(Function)_ - Custom "Load earlier messages" button - **`renderAvatar`** _(Function)_ - Custom message avatar; set to `null` to not render any avatar for the message - **`renderAllAvatars`** _(Bool)_ - Allways render the avatar of a message. Default is `false`. Only the first message from of a series by the same user has an avatar. - **`backgroundImage`** _(String)_ - No background image by default. Display image as background from URL - **`onPressAvatar`** _(Function(`user`))_ - Callback when a message avatar is tapped - **`renderAvatarOnTop`** _(Bool)_ - Render the message avatar at the top of consecutive messages, rather than the bottom (default) - **`renderBubble`** _(Function)_ - Custom message bubble - **`onLongPress`** _(Function(`context`, `message`))_ - Callback when a message bubble is long-pressed; default is to show an ActionSheet with "Copy Text" (see [example using `showActionSheetWithOptions()`](https://github.com/FaridSafi/react-native-gifted-chat/blob/master/example/CustomActions.js)) - **`renderMessage`** _(Function)_ - Custom message container - **`renderMessageText`** _(Function)_ - Custom message text - **`renderMessageImage`** _(Function)_ - Custom message image - **`imageProps`** _(Object)_ - Extra props to be passed to the [`<Image>`](https://facebook.github.io/react-native/docs/image.html) component created by the default `renderMessageImage` - **`lightboxProps`** _(Object)_ - Extra props to be passed to the `MessageImage`'s [Lightbox](https://github.com/oblador/react-native-lightbox) - **`renderCustomView`** _(Function)_ - Custom view inside the bubble - **`renderDay`** _(Function)_ - Custom day above a message - **`renderTime`** _(Function)_ - Custom time inside a message - **`renderFooter`** _(Function)_ - Custom fixed bottom view, e.g. "User is typing..."; see [example/App.js](example/App.js) for an example - **`renderInputToolbar`** _(Function)_ - Custom message composer container - **`renderComposer`** _(Function)_ - Custom text input message composer - **`renderActions`** _(Function)_ - Custom action button on the left of the message composer - **`renderSend`** _(Function)_ - Custom send button - **`renderAccessory`** _(Function)_ - Custom second line of actions below the message composer - **`onPressActionButton`** _(Function)_ - Callback when the Action button is pressed (if set, the default `actionSheet` will not be used) - **`bottomOffset`** _(Integer)_ - Distance of the chat from the bottom of the screen (e.g. useful if you display a tab bar) - **`minInputToolbarHeight`** _(Integer)_ - Minimum height of the input toolbar; default is `44` - **`listViewProps`** _(Object)_ - Extra props to be passed to the messages [`<ListView>`](https://facebook.github.io/react-native/docs/listview.html); some props can't be overridden, see the code in `MessageContainer.render()` for details - **`keyboardShouldPersistTaps`** _(Enum)_ - Determines whether the keyboard should stay visible after a tap; see [`<ScrollView>`](https://facebook.github.io/react-native/docs/scrollview.html) docs - **`onInputTextChanged`** _(Function)_ - Callback when the input text changes - **`maxInputLength`** _(Integer)_ - Max message composer TextInput length ## License - [MIT](LICENSE)