@douyinfe/semi-ui
Version:
A modern, comprehensive, flexible design system and UI library. Connect DesignOps & DevOps. Quickly build beautiful React apps. Maintained by Douyin-fe team.
113 lines (112 loc) • 4.55 kB
TypeScript
import React from 'react';
import BaseComponent from '../_base/baseComponent';
import PropTypes from 'prop-types';
import { noop } from '@douyinfe/semi-foundation/lib/es/utils/function';
import Item from './item';
import RatingFoundation, { RatingAdapter } from '@douyinfe/semi-foundation/lib/es/rating/foundation';
import '@douyinfe/semi-foundation/lib/es/rating/rating.css';
export type { RatingItemProps } from './item';
export interface RatingProps {
'aria-describedby'?: string;
'aria-errormessage'?: string;
'aria-invalid'?: boolean;
'aria-label'?: string;
'aria-labelledby'?: string;
'aria-required'?: boolean;
disabled?: boolean;
value?: number;
defaultValue?: number;
count?: number;
allowHalf?: boolean;
allowClear?: boolean;
style?: React.CSSProperties;
prefixCls?: string;
onChange?: (value: number) => void;
onHoverChange?: (value: number) => void;
className?: string;
character?: React.ReactNode;
tabIndex?: number;
onFocus?: (e: React.FocusEvent) => void;
onBlur?: (e: React.FocusEvent) => void;
onKeyDown?: (e: React.KeyboardEvent) => void;
onClick?: (e: React.MouseEvent | React.KeyboardEvent, index: number) => void;
autoFocus?: boolean;
size?: 'small' | 'default' | number;
tooltips?: string[];
id?: string;
preventScroll?: boolean;
}
export interface RatingState {
value: number;
hoverValue: number;
focused: boolean;
clearedValue: number;
emptyStarFocusVisible: boolean;
}
export default class Rating extends BaseComponent<RatingProps, RatingState> {
static contextType: React.Context<import("../configProvider/context").ContextValue>;
static propTypes: {
'aria-describedby': PropTypes.Requireable<string>;
'aria-errormessage': PropTypes.Requireable<string>;
'aria-invalid': PropTypes.Requireable<boolean>;
'aria-label': PropTypes.Requireable<string>;
'aria-labelledby': PropTypes.Requireable<string>;
'aria-required': PropTypes.Requireable<boolean>;
disabled: PropTypes.Requireable<boolean>;
value: PropTypes.Requireable<number>;
defaultValue: PropTypes.Requireable<number>;
count: PropTypes.Requireable<number>;
allowHalf: PropTypes.Requireable<boolean>;
allowClear: PropTypes.Requireable<boolean>;
style: PropTypes.Requireable<object>;
prefixCls: PropTypes.Requireable<string>;
onChange: PropTypes.Requireable<(...args: any[]) => any>;
onHoverChange: PropTypes.Requireable<(...args: any[]) => any>;
className: PropTypes.Requireable<string>;
character: PropTypes.Requireable<PropTypes.ReactNodeLike>;
tabIndex: PropTypes.Requireable<number>;
onFocus: PropTypes.Requireable<(...args: any[]) => any>;
onBlur: PropTypes.Requireable<(...args: any[]) => any>;
onKeyDown: PropTypes.Requireable<(...args: any[]) => any>;
autoFocus: PropTypes.Requireable<boolean>;
size: PropTypes.Requireable<NonNullable<number | "default" | "small">>;
tooltips: PropTypes.Requireable<string[]>;
id: PropTypes.Requireable<string>;
preventScroll: PropTypes.Requireable<boolean>;
};
static defaultProps: {
defaultValue: number;
count: number;
allowHalf: boolean;
allowClear: boolean;
style: {};
prefixCls: string;
onChange: typeof noop;
onHoverChange: typeof noop;
tabIndex: number;
size: "default";
};
stars: Record<string, Item>;
rate: HTMLUListElement;
foundation: RatingFoundation;
constructor(props: RatingProps);
static getDerivedStateFromProps(nextProps: RatingProps, state: RatingState): RatingState;
get adapter(): RatingAdapter<RatingProps, RatingState>;
componentDidMount(): void;
componentWillUnmount(): void;
onHover: (event: React.MouseEvent, index: number) => void;
onMouseLeave: () => void;
onClick: RatingProps['onClick'];
onFocus: RatingProps['onFocus'];
onBlur: RatingProps['onBlur'];
onKeyDown: RatingProps['onKeyDown'];
focus: () => void;
blur: () => void;
saveRef: (index: number) => (node: Item) => void;
saveRate: (node: HTMLUListElement) => void;
handleStarFocusVisible: (event: React.FocusEvent) => void;
handleStarBlur: (event: React.FocusEvent) => void;
getAriaLabelPrefix: () => string;
getItemList: (ariaLabelPrefix: string) => React.JSX.Element[];
render(): React.JSX.Element;
}