npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

react-native-chatbot

v0.0.1-alpha.12

Published

React Native Chatbot

Downloads

306

Readme

React Native Chatbot

A react native chatbot component to create conversation chats. Based on react-simple-chatbot.

Getting Start

npm install react-native-chatbot --save

Usage

import ChatBot from 'react-native-chatbot';

const steps = [
  {
    id: '0',
    message: 'Welcome to react chatbot!',
    trigger: '1',
  },
  {
    id: '1',
    message: 'Bye!',
    end: true,
  },
];

<ChatBot steps={steps} />

Documentation

Properties

| Name | Type | Default | Description | |---|---|---|---| | avatarStyle | PropTypes.object | | The style object to use to override the avatar element | | avatarWrapperStyle | PropTypes.object | | The style object to use to override the avatar surrounding element | | botAvatar | PropTypes.string | img | Bot image source | | botBubbleColor | PropTypes.string | #6E48AA | Bot bubble color | | botDelay | PropTypes.number | 1000 | The delay time of bot messages | | botFontColor | PropTypes.string | #fff | Bot font color | | bubbleStyle | PropTypes.object | | The style object to use to override the bubble element | | optionStyle | PropTypes.object | | The style object to use to override the option container | | optionElementStyle | PropTypes.object | | The style object to use to override the option element | | optionFontColor | PropTypes.string | | Option font color | | optionBubbleColor | PropTypes.string | | Option bubble color | | className | PropTypes.string | | Add a class name to root element | | contentStyle | PropTypes.object | | The style object to use to override the scroll element | | customDelay | PropTypes.number | 1000 | The delay time of custom messages | | customStyle | PropTypes.object | | The style object to use to override the custom step element | | footerStyle | PropTypes.object | | The style object to use to override the footer element | | handleEnd({ renderedSteps, steps, values }) | PropTypes.func | | The callback function when chat ends | | headerComponent | PropTypes.element | | Header component for the chatbot | | hideUserAvatar | PropTypes.bool | false | If true the user avatar will be hidden in all steps | | inputStyle | PropTypes.object | | The style object to use to override the input element | | keyboardVerticalOffset | PropTypes.number | ios ? 44 : 0 | Vertical offset of keyboard view. Check keyboardVerticalOffset | placeholder | PropTypes.string | Type the message ... | Chatbot input placeholder | | steps | PropTypes.array | | The chatbot steps to display | | style | PropTypes.object | | The style object to use to override the submit button element | | submitButtonStyle | PropTypes.object | | The style object to use to override the button element | | submitButtonContent | PropTypes.string or PropTypes.element | SEND| The string or object to use to override the button content | | userAvatar | PropTypes.string | img | User image source | | userBubbleStyle | PropTypes.string | img | The style object to use to override the user's bubble element | | userBubbleColor | PropTypes.string | #fff | User bubble color | | userDelay | PropTypes.number | 1000 | The delay time of user messages | | userFontColor | PropTypes.string | #4a4a4a | User font color | | scrollViewProps | PropTypes.object | #4a4a4a | Use to override scroll view props |

Steps

Text Step

| Name | Type | Required | Description | |---|---|---|---| | id | String / Number | true | The step id. Required for any step | | message | String / Function | true | The text message. If function, it will receive ({ previousValue, steps }) params | | trigger | String / Number / Function | false | The id of next step to be triggered. If function, it will receive ({ value, steps }) params | | avatar | String | false | the avatar to be showed just in this step. Note: this step must be a step that avatar appears | | delay | Number | false | set the delay time to message be shown | | end | Boolean | false | if true indicate that this step is the last | | inputAttributes | Object | Set any attributes on the input field (keyboardType, autoCapitalize, autoComplete) | | metadata | Object | Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format |

Example:

{
  id: '1',
  message: 'Hello World',
  trigger: '2',
},
{
  id: '2',
  message: ({ previousValue, steps }) => 'Hello',
  end: true,
}

User Step

| Name | Type | Required | Description | |---|---|---|---| | id | String / Number | true | The step id. Required for any step | | user | Boolean | true | if true indicate that you waiting a user type action | | trigger | String / Number / Function | false | The id of next step to be triggered. If function, it will receive ({ value, steps }) params | | validator | String / Number | false | if user attribute is true you can pass a validator function to validate the text typed by the user | | end | Boolean | false | if true indicate that this step is the last | | inputAttributes | Object | Set any attributes on the input field (keyboardType, autoCapitalize, autoComplete) | | metadata | Object | Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format |

Example:

{
  id: '1',
  user: true,
  inputAttributes: {
    keyboardType: 'email-address'
  },
  end: true,
}

Options Step

| Name | Type | Required | Description | |---|---|---|---| | id | String / Number | true | The step id. Required for any step | | options | Array | true | Array of options with { label, value, trigger } properties | | end | Boolean | false | if true indicate that this step is the last | | inputAttributes | Object | Set any attributes on the input field (keyboardType, autoCapitalize, autoComplete) | | metadata | Object | Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format |

Example:

{
  id: '1',
  options: [
    { value: 1, label: 'Number 1', trigger: '3' },
    { value: 2, label: 'Number 2', trigger: '2' },
    { value: 3, label: 'Number 3', trigger: '2' },
  ],
}

Custom Step

| Name | Type | Required | Description | |---|---|---|---| | id | String / Number | true | The step id. Required for any step | | component | Component | true | Custom React Component | | replace | Boolean | false | if true indicate that component will be replaced by the next step | | waitAction | Boolean | false | if true indicate that you waiting some action. You must use the triggerNextStep prop in your component to execute the action | | asMessage | Boolean | false | f true indicate that the component will be displayed as a text step | trigger | String / Number / Function | false | The id of next step to be triggered. If function, it will receive ({ value, steps }) params | | delay | Number | false | set the delay time to component be shown | | end | Boolean | false | if true indicate that this step is the last | | inputAttributes | Object | Set any attributes on the input field (keyboardType, autoCapitalize, autoComplete) | | metadata | Object | Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format |

Example:

{
  id: '1',
  component: <CustomComponent />
  trigger: '2'
}

Update Step

| Name | Type | Required | Description | |---|---|---|---| | id | String / Number | true | The step id. Required for any step | | update | String / Number | true | The id of next step to be updated | | trigger | String / Number / Function | false | The id of next step to be triggered. If function, it will receive ({ value, steps }) params | | inputAttributes | Object | Set any attributes on the input field (keyboardType, autoCapitalize, autoComplete) | | metadata | Object | Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format |

Example:

{
  id: '1',
  options: [
    { value: 1, label: 'Number 1', trigger: '3' },
    { value: 2, label: 'Number 2', trigger: '2' },
    { value: 3, label: 'Number 3', trigger: '2' },
  ],
}

Custom Component

When you declare a custom step, you need indicate a custom React Component to be rendered in the chat. This custom component will receive the following properties.

| Name | Type | Description | |---|---|---| | previousStep | PropTypes.object | Previous step rendered | | step | PropTypes.object | Current step rendered | | steps | PropTypes.object | All steps rendered | | triggerNextStep({ value, trigger }) | PropTypes.func | Callback function to trigger next step when user attribute is true. Optionally you can pass a object with value to be setted in the step and the next step to be triggered | | inputAttributes | Object | Set any attributes on the input field (keyboardType, autoCapitalize, autoComplete) | | metadata | Object | Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format |

How to Contribute

Please check the contributing guide

Authors

| Lucas Bassetti| |:---------------------:| | Lucas Bassetti |

See also the list of contributors who participated in this project.

Donate

If you liked this project, you can donate to support it :heart:

paypal

License

MIT · Lucas Bassetti