0.4.0 • Published 3 years ago

@joaosousa/react-native-progress-steps v0.4.0

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

@joaosousa/react-native-progress-steps

A lightweight and simple React Native component that tracks your progress by steps.

example 1 example horizontal

Table of Contents

Installation

Using yarn:

yarn add @joaosousa/react-native-progress-steps

Using npm:

npm install @joaosousa/react-native-progress-steps

Usage

You can use it as is, using default components:

import ProgressSteps, { Title, Content } from '@joaosousa/react-native-progress-steps';

const [step, setStep] = useState(0);

<ProgressSteps
  currentStep={step}
  steps={[
    {
      id: /* Your id */,
      title: <Title>{/* Your title */}</Title>,
      content: <Content>{/* Your content */}</Content>,
    },
    {
      id: /* Your id */,
      title: <Title>{/* Your title */}</Title>,
      content: <Content>{/* Your content */}</Content>,
    },
  ]}
/>;

If you want to customize, you can use the property colors following the structure on the example below:

import ProgressSteps, { Title, Content } from '@joaosousa/react-native-progress-steps';

const [step, setStep] = useState(0);

<ProgressSteps
  currentStep={step}
  steps={[
    {
      id: /* Your id */,
      title: <Title>{/* Your title */}</Title>,
      content: <Content>{/* Your content */}</Content>,
    },
    {
      id: /* Your id */,
      title: <Title>{/* Your title */}</Title>,
      content: <Content>{/* Your content */}</Content>,
    },
  ]}
  colors={{
    title: {
      text: {
        normal: '#94d2bd',
        active: '#005f73',
        completed: '#005f73',
      },
    },
    marker: {
      text: {
        normal: '#94d2bd',
        active: '#005f73',
        completed: '#f4f3ee',
      },
      line: {
        normal: '#94d2bd',
        active: '#005f73',
        completed: '#005f73',
      },
    },
  }}
/>

Or, alternatively, with your own custom components:

import ProgressSteps from '@joaosousa/react-native-progress-steps';
import YourMarker from './YourMarker';
import YourTitle from './YourTitle';
import YourContent from './YourContent';

const [step, setStep] = useState(0);

<ProgressSteps
  marker={<YourMarker />}
  currentStep={step}
  steps={[
    {
      id: /*Your id*/,
      title: <YourTitle>{/*Your title*/}</YourTitle>,
      content: <YourContent>{/* Your content */}</YourContent>,
    },
    {
      id: /*Your id*/,
      title: <YourTitle>{/*Your title*/}</YourTitle>,
      content: <YourContent>{/* Your content */}</YourContent>,
    },
  ]}
/>;

To help you make visual changes, the property stepState will be automatically injected in your custom components with the following data:

{
  stepIndex: number;
  isActive: boolean;
  isCompleted: boolean;
  isFirst: boolean;
  isFirstInteraction: boolean;
  isLast: boolean;
}

Here is an example of stepState usage in a custom component:

import { Text } from 'react-native';

const CustomTitle = ({ children, stepState: { isCompleted } }) => {
  if (isCompleted) {
    return <Text>Well done! This step was completed.</Text>;
  }

  return <Text>{children}</Text>;
};

export default CustomTitle;

Properties

ProgressSteps

NameDescriptionDefaultTypeOptional
currentStepThe index of the currently active stepnoneNumberNo
stepsList of stepsnoneArrayNo
orientationSupport for vertical or horizontal orientation'vertical'StringYes
markerCustom step identifierMarkerReactElementYes
colorsProperty that let you add customizationnoneObjectYes

Steps array model

[
  {
    id?: string | number,
    title: ReactElement,
    content?: ReactElement,
  },
  ...
]

Colors customization model

{
  title?: {
    text: {
      normal: string,
      active: string,
      completed: string
    }
  },
  marker?: {
    text: {
      normal: string,
      active: string,
      completed: string
    },
    line: {
      normal: string,
      active: string,
      completed: string
    }
  }
}

Demos

Example 1Example 2Example 3
example 1example 2example 3
example/src/examples/Example1example/src/examples/Example2example/src/examples/Example3

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT