Coder Social home page Coder Social logo

guide's Introduction

Introduction

English | 简体中文

When we onboard new users or ship new features, how do we make sure that our audience knows what's in it and get them excited to use our apps? That's where an onboarding sequence comes into play. This React library guide offers an effective way to construct a smooth onboarding experience. mask no mask

Installation

/* install via npm or yarn */
npm i byte-guide
yarn add byte-guide

/* load via umd */
<script src='https://unpkg.com/byte-guide/dist/index.umd.min.js'></script>
/* load via umd and specified version */
<script src='https://unpkg.com/byte-guide@version/dist/index.umd.min.js'></script>

Usage

import Guide from 'byte-guide';
<Guide
  steps={[]}
  localKey="uni-key"
  /* customize styles */
  hotspot
  modalClassName="my-guide-modal"
  maskClassName="my-guide-arrow"
  /* customize callbacks */
  onClose={() => {
    /* do sth */
  }}
  beforeStepChange={(nextIndex, nextStep) => {
    /* do sth */
  }}
  afterStepChange={(nextIndex, nextStep) => {
    /* do sth */
  }}
  /* customize footers */
  stepText={(stepIndex, stepCount) => `Step ${stepIndex} of ${stepCount}`}
  nextText="Next"
  prevText="Previous"
  showPreviousBtn
  okText="Finish"
/>;

API

Component API's

| props | definition | type | required | defalut value | | :-------------------- | :------------------------------------------------------------------------------------------------------------------- | :--------------------------------------- | :------- | :------------------------------------------------------------ | --- | | steps | An array of info of each step of the onboarding sequence | IStep[] | ✓ | -- | | localKey | A unique key that will be stored in localStorage to indicate if the guide has finished | string | ✓ | -- | | expireDate | The expire date of the guide when it will not be displayed anymore | string,YYYY-mm-hh | | -- | | closable | If the guide can be closed before the last step. If false, the close button x will not be displayed on each modal. | bool | | true | | closeEle | Customize the element that skips the guide | string, reactNode | | | modalClassName | The class name of the modal | string | | -- | | maskClassName | The class name of the mask | string | | -- | | mask | Whether or not to display the mask | bool | | false | | arrow | Whether or not to display the arrow | bool | | true | | hotspot | Whether or not to display the hotspot | bool | | false | | stepText | The custom text for the step info | (stepIndex, stepCount): string => {} | | (stepIndex, stepCount) => Step ${stepIndex} of ${stepCount} | | nextText | The custom text for the Next Step button | string | | Next | | prevText | The custom text for the Previous step button | string | | Previous | | showPreviousBtn | Whether or not to display the previous button | bool | | true | | okText | The custom text for the confirm button at the last step | string | | I know | | visible | If the guide is visible | bool | | true | | lang | The language of use | 'zh' | 'en' | 'ja' | | 'zh' | | step | The first step's number | number | | 0 | | autoScroll | auto scroll to the guide on load | bool | | true | | afterStepChange | The callback function when the step changes | (nextIndex, nextStep): void=>{} | | -- | | beforeStepChange | The callback function when the user is about to move to the next step | (stepIndex: number, step: IStep) => void | | -- | | | onClose | The callback function when the guide closes */ | | onClose?: () => void; | ():void=> {} | | -- |

steps: IStep[]

key definition type required defalut value
selector The CSS Selector of the anchor element or the anchor element itself string | () => reactNode, reactNode --
targetPos If you don't want the modal to be displayed relative to an anchor element, you can pass a targetPos object to indicate the modal's position relative to the document body { top, left, width, height } Required when selector is not defined --
title The title of the modal string --
content The content of the modal string | reactNode --
placement The placement of the modal relative to the selector 'top' | 'bottom' | 'left' | 'right' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'left-top' | 'left-bottom' | 'right-top' | 'right-bottom' 'bottom'
offset The offset of the modal relative to the selector. x indicates the horizontal offset, y the vertical offset { x, y } --
parent The parent component to mount 'body'or null --
visible If this step is visible bool true
skip If this step should be skipped bool false
beforeStepChange The function called when user click "next" and BEFORE going to the next step (curStep: IStep, curStepIndex: number, steps: IStep[]) => void; --
afterStepChange The function called when user click "next" and AFTER going to the next step (curStep: IStep, curStepIndex: number, steps: IStep[]) => void; --

An example of steps

const steps = [
  {
    selector: '#search',
    title: 'Search',
    content: <div>You can now search for your customers using ID or name</div>,
    placement: 'bottom-left',
    offset: {
      x: 20,
    }
    beforeStepChange: () => {
      window.open('https://my.web.net')
    }
  },
  {
    selector: () => {
        const tabs = Array.from(
          document.querySelectorAll('.nav-scroll > div > div > .tab')
        );
        return tabs?.[2];
      },
    title: 'Customer Detail',
    content: 'In this tab, you can read and update customer details.'
    visible: location.pathname === 'customer/detail'
  }
];

guide's People

Contributors

albert-cord avatar fz6m avatar herringtondarkholme avatar windlany avatar xch1029 avatar xyuwan avatar ycjcl868 avatar yjiang28 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.