Package Exports
- @react-md/progress
- @react-md/progress/es/index.js
- @react-md/progress/lib/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@react-md/progress) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@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"));