1.1.1 • Published 2 years ago

@tomik23/react-circular-progress-bar v1.1.1

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

Demo

See the demo - example

Install

yarn add @tomik23/react-circular-progress-bar
# or
npm install @tomik23/react-circular-progress-bar

Usage

import { CircularProgressBar } from "@tomik23/react-circular-progress-bar";
// available control variables
const props = {
  percent: 60, // is require
  colorSlice: "#00a1ff",
  colorCircle: "#00a1ff",
  fontColor: "#365b74",
  fontSize: "1.6rem",
  fontWeight: 400,
  size: 200,
  stroke: 10,
  strokeBottom: 5,
  speed: 60,
  cut: 0,
  rotation: -90,
  opacity: 10,
  fill: "#00897B",
  unit: "%",
  textPosition: "0.35em",
  animationOff: false,
  strokeDasharray: "10,1",
  inverse: false,
  round: false,
  number: true,
  linearGradient: ["#ffff00", "brown"]
};

<CircularProgressBar {...props} />;

Update percent

If you want to update component you have to add id to each of them

const config = {
  id: 0, // important
  percent: 50,
  colorSlice: "#E91E63"
};

function App() {
  const [update, setUpdate] = useState(config);

  useEffect(() => {
    const interval = setInterval(() => {
      setUpdate({
        ...config,
        id: 0, // we indicate which component we want to change
        percent: Math.floor(Math.random() * 100 + 1)
        colorSlice: "#000",
        fontColor: "#F50057",
        fontSize: "1.2rem",
        fontWeight: 700
      });
    }, 3000);
    return () => clearInterval(interval);
  }, []);

  const newObject = { ...config, ...update };

  return (
    <div>
      <CircularProgressBar {...newObject} />
    </div>
  );
}

Add photos and text

const config = {
  percent: 55,
  colorSlice: "#E91E63",
  colorCircle: "#f1f1f1",
  fontWeight: 100,
  number: false // turn off the percentage animation first
};

<CircularProgressBar key={index} {...props}>
  <img
    src="https://picsum.photos/100/100"
    style={{
      width: "60px",
      borderRadius: "50%",
      padding: "2px",
      border: "3px solid salmon"
    }}
    alt="Random image"
  />
  <div style={{ textAlign: "center", padding: "0 35px" }}>
    Lorem, ipsum dolor.
  </div>
</CircularProgressBar>;

Add photos and percent animation

const config = {
  percent: 55,
  colorSlice: "#CDDC39",
  colorCircle: "#f1f1f1",
  fontWeight: 100,
  fontSize: "1rem",
  textPosition: "1.5em" // needed element to move the percentage animation lower
};

<CircularProgressBar key={index} {...props}>
  <img
    src="https://picsum.photos/100/100"
    style={{
      width: "60px",
      borderRadius: "50%",
      marginTop: "-40px",
      padding: "2px",
      border: "3px solid salmon"
    }}
    alt="Random image"
  />
</CircularProgressBar>;

How to turn off % or style them?

Turning off the percentage and leaving the number alone is very simple. Each percent (%) has a class of circular-unit-x of course you must add for each circleid. If you don't do this, the class will always be circular-unit-0. Just add .circular-unit-x { display: none } to our styles. Digit animation remains but percent sign % disappears.

You can also style this elements to create your own styles, example below:

.circular-unit-15 {
  fill: #f50057;
  font-size: 0.8rem;
  font-weight: 700;
}

Instead of adding styles to a component, you can add them in the configuration stage.

const examples = [
  {
    percent: 75,
    styles: {
      borderRadius: "50%",
      boxShadow: "inset 0 0 25px 10px #a2caff"
    }
  }
];

{examples.map((props, index) => {
  return <CircularSection key={index} {...props} />;
})}

See an example Minimal Width Shadow

Configuration of the plugin

propstypedefaultrequiredescription
percentnumberRepresents the progress bar and animation of the animation progress expressed by a number e.g. 65%
idnumberIf you want to update a component, you need to add an id to each of them. Also when you want to display several components with different gradients - linearGradient
speednumberFrame rate animation fps. Let's say you want the animation to be 60fps, just add the parameter speed: 60
animationOffbooleanfalseTurn off the progress animation
animationSmoothstring | | The transition property allows you to create animations (a smooth transition effect), e.g. 500ms ease-out
colorSlicestring'#00a1ff'Progress layer color and background "#ffff00","brown" *
colorCirclestring'#00a1ff'Bottom circle color Font "#ffff00","brown" *
strokenumber10Stroke width, chart thickness
strokeBottomnumber10If "strokBottom" is set, it is used to generate a background circle size
roundbooleanfalsePath rounding
inversebooleanfalseCounterclockwise animation
opacitynumber10Opacity box-shadow, 10 = 1, 9 = 0.9 ... 1 = 0.1
rotationnumber-90Chart rotation
numberbooleantrueAdd props number and set to false to hide the number with percent
sizenumber200Size progress bar width and height in px
cutnumber0Angle of the circle sector
unitstring%Different unit instead of percentage (%) inside the circle
fillstringnoneInner circle color
strokeDasharraystring | | It works only on the lowest circle and only on whole circles - stroke-dasharray
textPositionstring0.35emThe position of the SVG TEXT element vertically
fontSizestring1.6remFont size. The font can be shown in units rem, em, px ...
fontWeightnumber400400, 600, ...
fontColorstring'#365b74'Font color "#ffff00","brown" *
linearGradientarrayArray of colors "lineargradient": "#ffff00","brown" *
stylesobjectPossibility to add styles to parent div see example Minimal Width Shadow

Colors names

* See colors names

Browsers support

IE / EdgeFirefoxChromeOperaVivaldi
IE11+, Edgelast 2 versionslast 2 versionslast 2 versionslast 2 versions
1.1.1

2 years ago

1.1.0

2 years ago

0.1.25

3 years ago

0.1.24

3 years ago

0.1.23

3 years ago

0.1.22

3 years ago

0.1.20

3 years ago

0.1.21

3 years ago

0.1.19

3 years ago

0.1.18

3 years ago

0.1.17-alpha.1

3 years ago

0.1.17

3 years ago

0.1.16

3 years ago

0.1.12

3 years ago

0.1.13

3 years ago

0.1.14

3 years ago

0.1.15

3 years ago

0.1.14-alpha.2

3 years ago

0.1.14-alpha.1

3 years ago

0.1.14-alpha.4

3 years ago

0.1.14-alpha.3

3 years ago

0.1.14-alpha.6

3 years ago

0.1.14-alpha.5

3 years ago

0.1.10

3 years ago

0.1.11

3 years ago

0.1.9

3 years ago

0.1.8

3 years ago

0.1.7

3 years ago

0.1.6

3 years ago

0.1.5

3 years ago

0.1.4

3 years ago

0.1.3

3 years ago

0.1.2

3 years ago

0.1.1

3 years ago

0.1.0

3 years ago