UNPKG

@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
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; }