Shards React is a useful UI library that lets us add many components easily into our React app.
In this article, we’ll look at how to use it to add components to our React app.
Slider Values
We can bind the slider’s value to a state by setting the start
prop and setting the onSlide
prop.
For instance, we can write:
import React, { useState } from "react";
import { Slider } from "shards-react";
import "bootstrap/dist/css/bootstrap.min.css";
import "shards-ui/dist/css/shards.min.css";
export default function App() {
const [value, setValue] = useState(20);
return (
<div className="App">
<p>Value: {value}</p>
<Slider
onSlide={([val]) => setValue(+val)}
theme="success"
connect={[true, false]}
start={[value]}
range={{ min: 0, max: 100 }}
/>
</div>
);
}
We have a function that gets the value from the array parameter.
Then we call setValue
to set the value.
start
has the value
inside the array.
Multiple Values
We can also add range sliders with the connect
prop set to true
:
import React, { useState } from "react";
import { Slider } from "shards-react";
import "bootstrap/dist/css/bootstrap.min.css";
import "shards-ui/dist/css/shards.min.css";
export default function App() {
const [values, setValues] = useState([20, 50]);
return (
<div className="App">
<p>Value: {values.join(" - ")}</p>
<Slider
onSlide={([min, max]) => setValues([+min, +max])}
theme="success"
connect
start={values}
range={{ min: 0, max: 100 }}
/>
</div>
);
}
We get the min
and max
values we selected from the array parameter.
Then we pass it into the setValues
method as an array.
And we set start
to values
to set the value of the slider.
Pips
We can add pips onto the slider with the pips
prop:
import React, { useState } from "react";
import { Slider } from "shards-react";
import "bootstrap/dist/css/bootstrap.min.css";
import "shards-ui/dist/css/shards.min.css";
export default function App() {
const [values, setValues] = useState([20, 50]);
return (
<div className="App">
<p>Value: {values.join(" - ")}</p>
<Slider
onSlide={([min, max]) => setValues([+min, +max])}
pips={{ mode: "steps", stepped: true, density: 3 }}
connect
start={values}
range={{ min: 0, max: 100 }}
/>
</div>
);
}
Now we see ticks on the slider.
Tooltip
We can add tooltips with the Tooltip
component.
For instance, we can write:
import React, { useState } from "react";
import { Tooltip, Button } from "shards-react";
import "bootstrap/dist/css/bootstrap.min.css";
import "shards-ui/dist/css/shards.min.css";
export default function App() {
const [open, setOpen] = useState();
const toggle = () => {
setOpen((o) => !o);
};
return (
<div className="App">
<Button id="TooltipExample">Hover Me</Button>
<Tooltip open={open} target="#TooltipExample" toggle={toggle}>
I am a tooltip
</Tooltip>
</div>
);
}
We add the Tooltip
component with the open
prop to control when the tooltip is opened.
toggle
prop has the toggle
function to toggle the open
state to control the tooltip.
We can change the placement with the placement
prop:
import React, { useState } from "react";
import { Tooltip, Button } from "shards-react";
import "bootstrap/dist/css/bootstrap.min.css";
import "shards-ui/dist/css/shards.min.css";
export default function App() {
const [open, setOpen] = useState();
const toggle = () => {
setOpen((o) => !o);
};
return (
<div className="App">
<Button id="TooltipExample">Hover Me</Button>
<Tooltip
placement="right"
open={open}
target="#TooltipExample"
toggle={toggle}
>
I am a tooltip
</Tooltip>
</div>
);
}
And we can change how it’s triggered with the trigger
prop:
import React, { useState } from "react";
import { Tooltip, Button } from "shards-react";
import "bootstrap/dist/css/bootstrap.min.css";
import "shards-ui/dist/css/shards.min.css";
export default function App() {
const [open, setOpen] = useState();
const toggle = () => {
setOpen((o) => !o);
};
return (
<div className="App">
<Button id="TooltipExample">Click Me</Button>
<Tooltip
trigger="click"
open={open}
target="#TooltipExample"
toggle={toggle}
>
I am a tooltip
</Tooltip>
</div>
);
}
Conclusion
We can bind selected slider values to states and add tooltips onto the React app with Shards React.