@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.88 kB
TypeScript
import React from 'react';
import PropTypes from 'prop-types';
import { strings } from '@douyinfe/semi-foundation/lib/cjs/rating/constants';
import '@douyinfe/semi-foundation/lib/cjs/rating/rating.css';
import { RatingItemFoundation, RatingItemAdapter } from '@douyinfe/semi-foundation/lib/cjs/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 {};