Rating Star UI Component powered by ReactJS
npm i rating-star
yarn add rating-star
The version of React has to be 16.8.0 or above.
Javascript / Typescript
import { RatingStar } from "rating-star";
export default function App() {
const [rating, setRating] = React.useState(30);
const onRatingChange = (score) => {
setRating(score);
};
return (
<div className="App">
<h1>Rating Star</h1>
<RatingStar
clickable
maxScore={100}
id="123"
rating={rating}
onRatingChange={onRatingChange}
/>
</div>
);
}
For more details, can go to Demos.
Name | Description |
---|---|
id |
the element id |
clickable (optional) |
enable click for the ratings, default is false |
noBorder (optional) |
disable borders of the star icon, default is false |
size (optional) |
icon size, default is 24 |
maxScore (optional) |
the maximum score of the ratings, default is 5 |
rating (optional) |
the current score, default is 0 |
numberOfStar (optional) |
total number of star icons, default is 5 |
colors (optional) |
colours of the star icon |
onRatingChange (optional) |
a callback of rating changes |
interface ColourTheme {
stroke: string;
mask: string;
rear: string;
}
interface RatingStarProps {
id: string;
clickable?: boolean;
noBorder?: boolean;
size?: number;
maxScore?: number;
rating?: number;
numberOfStar?: number;
colors?: Partial<ColourTheme>;
onRatingChange?: (rating: number) => void;
}
You can customise the star icon with your needs.
Example:
import AcUnitIcon from "@material-ui/icons/AcUnit";
import { RatingStar } from "rating-star";
function App() {
return (
<RatingStar
id="custom-icon-wow"
rating={3}
starIcon={AcUnitIcon}
colors={{ mask: "#43a7e3" }}
noBorder
/>
);
}
-
The custom icon must be a SVG React component which contains only one child element.
The child element can be one of:
path
polygon
circle
rect
image
e.g.
function CustomIcon() { return ( <svg> <path d="..." /> </svg> ); }
You can customise the styles of the rating-star
container by CSS class name, "rating-star",
or use the id
you have assigned to the rating-star
component.
For styled-components
lover, you can modify the styles with the power of the styled-components
.
import styled from "styled-components";
import { RatingStarContainer, RatingStarIconsWrapper } from "rating-star";
const YourStyledComponent = styled.div`
${RatingStarContainer} {
margin: 10px 0;
}
${RatingStarIconsWrapper} {
> svg {
margin: 3px 0;
}
}
`;