react-star-rate
Version:
Lightweight, customizable star ratings component for React
80 lines (79 loc) • 2.4 kB
TypeScript
import * as React from 'react';
import { CSSAttribute } from 'goober';
import Star from './star';
export interface StarsRatingProps {
allowClear?: boolean;
allowHalf?: boolean;
autoFocus?: boolean;
classNamePrefix?: string;
count?: number;
defaultValue?: number;
direction?: 'ltr' | 'rtl';
disabled?: boolean;
onBlur?: () => void;
onChange?: (value?: number) => void;
onFocus?: () => void;
onHoverChange?: (value?: number) => void;
style?: StarsRatingStyles;
symbol?: React.ReactNode;
tabIndex?: number;
value?: number;
}
declare type StarsRatingStyles = {
style?: CSSAttribute;
full?: {
first?: CSSAttribute;
second?: CSSAttribute;
star?: CSSAttribute;
};
half?: {
first?: CSSAttribute;
second?: CSSAttribute;
star?: CSSAttribute;
};
zero?: {
first?: CSSAttribute;
second?: CSSAttribute;
star?: CSSAttribute;
};
hover?: Omit<StarsRatingStyles, 'hover'>;
};
interface StarsRatingState {
clearedValue?: number;
hoverValue?: number;
value?: number;
}
declare class StarsRating extends React.Component<StarsRatingProps, StarsRatingState> {
static defaultProps: {
allowClear: boolean;
allowHalf: boolean;
classNamePrefix: string;
count: number;
defaultValue: number;
direction: string;
disabled: boolean;
onChange: () => void;
onHoverChange: () => void;
style: {};
symbol: string;
tabIndex: number;
};
ratingContainerRef?: HTMLUListElement | null;
starRefs?: {
[key: number]: Star;
};
constructor(props: StarsRatingProps);
componentDidMount(): void;
static getDerivedStateFromProps(nextProps: StarsRatingProps, state: StarsRatingState): StarsRatingState;
onHover: (event: React.MouseEvent<HTMLLIElement>, index: number) => void;
onMouseLeave: () => void;
onClick: (event: React.MouseEvent, index: number) => void;
onFocus: () => void;
onBlur: () => void;
changeValue: (value: number) => void;
saveStarRef: (index: number) => (node: Star) => void;
getStarValue: (index: number, x: number) => number;
focus: () => void;
render(): JSX.Element;
}
export default StarsRating;