1.0.6 • Published 1 year ago

reactchatt v1.0.6

Weekly downloads
-
License
ISC
Repository
github
Last release
1 year ago

react chat component

Getting Started

npm install reactchatt

Demo

Playground

Usage

import { ReactChat } from "reactchatt";

<ReactChat messages={messages} />;

User guide

Props

DescriptionTypeDefault
messagesArray of messagesArray<MessageProps>[]
placeholderComposer placeholderstringWrite
typingTyping animationbooleanfalse
typingInfoTyping information (e.g Who is typing)stringfalse
iconShow user's iconsbooleanfalse
titleShow user's titlesbooleanfalse
thresholdEdge reach threshold triggernumber0
loadingLoading animationbooleanfalse
dateShow date on messenger bodybooleantrue
dateFormatMessenger date formatboolean'MMMM D'

Events

DescriptionType
onMessageClickMessage click(id: string) => void
onMessageDblClickMessage double click(id: string) => void
onMessageItemClickMessage item click callback (e.g Multi messages)(message: string, id: string) => void;
onMessageLongClickMessage long Touch (mobile)(id: string) => void
onPulledMessage Pulled (mobile) (temp unstable)(id: string) => void
onMessageContextOn message context click(id: string) => void
onEdgeReachEdge reach by scrolling() => void
onMessageSystemDateClickDays Click(date: Date) => void
onReplyMessageClickReply part clicked of message(messageId: string, parentId?: string) => void

Message types

  1. MessageProps - common message type.
  2. MessageTextProps;
interface MessageTextProps {
	text: string;
	id: string;
	title: string;
	avatar?: string;
	status: MessageStatus;
	edited?: boolean;
	date: Date;
	dateFormat?: string;
	type: "text";
	repliedMessage?: MessageProps;
	owner: Owner;
}
  1. MessageFileProps
interface MessageFileProps {
	caption?: string;
	needTitle?: boolean;
	files: Array<File>;

	id: string;
	title: string;
	avatar?: string;
	position: "left" | "right";
	status: MessageStatus;
	pending?: boolean;
	edited?: boolean;
	date: Date;
	dateFormat?: string;
	type: "file";
	repliedMessage?: MessageProps;
	owner: string;
}

export interface File {
	id: string;
	type: "img" | "doc";
	title: string;
	url: string;
	secondary?: string;
}
  1. MessageImageProps
interface MessageImageProps {
	caption?: string;
	images: Array<Image>;
	id: string;
	title: string;
	avatar?: string;
	status: MessageStatus;
	edited?: boolean;
	date: Date;
	dateFormat?: string;
	type: "img";
	repliedMessage?: MessageProps;
	owner: string;
}

export interface Image {
	id: string;
	title: string;
	url: string;
	width: number;
	height: number;
}

Custom renders

DescriptionType
renderTextMessageCustom text message(message: MessageTextProps, order: MessageOrder) => JSX.Element
renderImageMessageCustom image message(message: MessageImageProps,order: MessageOrder) => JSX.Element
renderFileMessageCustom file message(message: MessageFileProps, order: MessageOrder) => JSX.Element
renderAnyMessageAny message render. Just put type -> 'any'(message: MessageCoreProps, order: MessageOrder) => JSX.Element

Types

type MessageOrder = "start" | "end" | "middle" | "single";

enum MessageStatus {
	created = 0,
	pending = 1,
	sent = 2,
	read = 3,
	error = 4,
}

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

License

MIT

P.S.

I am open for job offers :) { mail: zey.verdiyev@gmail.com, telegram: @mirluiz }

1.0.6

1 year ago

1.0.5

1 year ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago

0.9.653

1 year ago

0.9.652

1 year ago

0.9.651

1 year ago

0.9.65

1 year ago

0.9.64

1 year ago

0.9.63

1 year ago

0.9.62

1 year ago

0.9.61

1 year ago

0.9.6

1 year ago

0.9.5

1 year ago

0.9.4

1 year ago

0.9.3

1 year ago

0.9.2

1 year ago

0.9.1

1 year ago

0.9.0

1 year ago