@react-md/progress
TypeScript icon, indicating that this package has built-in type declarations

5.1.6 • Public • Published

@react-md/progress

Create accessible horizontal or vertical progress bars or circular progress indicators that can either be deterministic or indeterministic.

Installation

npm install --save @react-md/progress

It is also recommended to install the following packages for updating the progress theme or transitions:

npm install --save @react-md/theme \
  @react-md/transition \
  @react-md/utils

Documentation

You should check out the full documentation for live examples and more customization information, but an example usage is shown below.

Usage

The majority of the time you'll be using the progress components to track some long running task or initial page loading. For accessibility, you'll need to add an id to the progress component as well as updating the main loading area to have aria-buys="true" and aria-describedby="PROGRESS_ID":

import { render } from "react-dom";
import { CircularProgress, LinearProgress } from "@react-md/progress";
import { Typography } from "@react-md/typography";
import { useToggle } from "@react-md/utils";

const App = () => {
  const [loadingCircle, , stopLoadingCircle] = useToggle(true);
  const [loadingLinear, , stopLoadingLinear] = useToggle(true);

  useEffect(() => {
    let circleTimeout = window.setTimeout(() => {
      stopLoadingCircle();
      circleTimeout = undefined;
    }, 5000);

    let linearTimeout = window.setTimeout(() => {
      stopLoadingLinear();
      linearTimeout = undefined;
    }, 8000);

    return () => {
      window.clearTimeout(circleTimeout);
      window.clearTimeout(linearTimeout);
    };
  }, []);

  return (
    <>
      <div
        id="circle-content"
        aria-busy={loadingCircle || undefined}
        aria-describedby={loadingCircle ? "circular-progress" : undefined}
      >
        {loadingCircle && <CircularProgress id="circular-progress" />}
        {!loadingCircle && (
          <Typography type="headline-2">Hello from circle div</Typography>
        )}
      </div>
      <div
        id="linear-content"
        aria-busy={loadingLinear || undefined}
        aria-describedby={loadingCircle ? "circular-progress" : undefined}
      >
        {loadingLinear && <CircularProgress id="linear-progress" />}
        {!loadingLinear && (
          <Typography type="headline-2">Hello from linear div</Typography>
        )}
      </div>
    </>
  );
};

render(<App />, document.getElementById("root"));

Package Sidebar

Install

npm i @react-md/progress

Weekly Downloads

1,142

Version

5.1.6

License

MIT

Unpacked Size

121 kB

Total Files

51

Last publish

Collaborators

  • mlaursen