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.

65 lines (64 loc) 2.87 kB
import React from 'react'; import PropTypes from 'prop-types'; import { strings } from '@douyinfe/semi-foundation/lib/es/rating/constants'; import '@douyinfe/semi-foundation/lib/es/rating/rating.css'; import { RatingItemFoundation, RatingItemAdapter } from '@douyinfe/semi-foundation/lib/es/rating/foundation'; import BaseComponent, { BaseProps } from '../_base/baseComponent'; type ArrayElement<ArrayType extends readonly unknown[]> = ArrayType extends readonly (infer ElementType)[] ? ElementType : never; export interface RatingItemProps extends BaseProps { value: number; index: number; prefixCls: string; allowHalf: boolean; onHover: (e: React.MouseEvent, index: number) => void; onClick: (e: React.MouseEvent | React.KeyboardEvent, index: number) => void; character: React.ReactNode; focused: boolean; disabled: boolean; count: number; ariaLabelPrefix: string; size: number | ArrayElement<typeof strings.SIZE_SET>; 'aria-describedby'?: React.AriaAttributes['aria-describedby']; onFocus?: (e: React.FocusEvent) => void; onBlur?: (e: React.FocusEvent) => void; preventScroll?: boolean; } export interface RatingItemState { firstStarFocus: boolean; secondStarFocus: boolean; } export default class Item extends BaseComponent<RatingItemProps, RatingItemState> { static propTypes: { value: PropTypes.Requireable<number>; index: PropTypes.Requireable<number>; prefixCls: PropTypes.Requireable<string>; allowHalf: PropTypes.Requireable<boolean>; onHover: PropTypes.Requireable<(...args: any[]) => any>; onClick: PropTypes.Requireable<(...args: any[]) => any>; character: PropTypes.Requireable<PropTypes.ReactNodeLike>; focused: PropTypes.Requireable<boolean>; disabled: PropTypes.Requireable<boolean>; count: PropTypes.Requireable<number>; ariaLabelPrefix: PropTypes.Requireable<string>; size: PropTypes.Requireable<NonNullable<number | "default" | "small">>; 'aria-describedby': PropTypes.Requireable<string>; onFocus: PropTypes.Requireable<(...args: any[]) => any>; onBlur: PropTypes.Requireable<(...args: any[]) => any>; preventScroll: PropTypes.Requireable<boolean>; }; foundation: RatingItemFoundation; constructor(props: RatingItemProps); get adapter(): RatingItemAdapter<RatingItemProps, RatingItemState>; firstStar: HTMLDivElement; secondStar: HTMLDivElement; onHover: React.MouseEventHandler; onClick: React.MouseEventHandler; onFocus: (e: any, star: any) => void; onBlur: (e: any, star: any) => void; onKeyDown: React.KeyboardEventHandler; starFocus: () => void; saveFirstStar: (node: HTMLDivElement) => void; saveSecondStar: (node: HTMLDivElement) => void; render(): React.JSX.Element; } export {};