let { Rating, RatingSize, getTheme, createTheme, ITheme, Fabric } = window.Fabric;
class RatingBasicExample extends React.Component<
{},
{
rating?: number;
largeStarRating?: number;
smallStarRating?: number;
tenStarRating?: number;
themedStarRating?: number;
}
> {
private _customTheme: ITheme;
constructor(props: {}) {
super(props);
this.state = {
largeStarRating: undefined,
smallStarRating: 3,
tenStarRating: undefined,
themedStarRating: undefined
};
this._customTheme = createTheme(getTheme());
this._customTheme.semanticColors.bodySubtext = '#DFDFDF';
this._customTheme.semanticColors.bodyTextChecked = '#1E9FE8';
}
// tslint:disable:jsx-no-lambda
public render(): JSX.Element {
return (
Large Stars:
console.log('onFocus called')}
onBlur={() => console.log('onBlur called')}
ariaLabelFormat={'{0} of {1} stars selected'}
/>
Small Stars
console.log('onFocus called')}
onBlur={() => console.log('onBlur called')}
ariaLabelFormat={'{0} of {1} stars selected'}
/>
10 Small Stars
console.log('onFocus called')}
onBlur={() => console.log('onBlur called')}
ariaLabelFormat={'{0} of {1} stars selected'}
/>
Disabled:
console.log('onFocus called')}
onBlur={() => console.log('onBlur called')}
ariaLabelFormat={'{0} of {1} stars selected'}
/>
Half star in readOnly mode:
Themed star
console.log('onFocus called')}
onBlur={() => console.log('onBlur called')}
ariaLabelFormat={'{0} of {1} stars selected'}
theme={this._customTheme}
/>
);
}
private _onLargeStarChange = (ev: React.FocusEvent, rating: number): void => {
this.setState({
largeStarRating: rating
});
};
private _onSmallStarChange = (ev: React.FocusEvent, rating: number): void => {
this.setState({
smallStarRating: rating
});
};
private _onTenStarChange = (ev: React.FocusEvent, rating: number): void => {
this.setState({
tenStarRating: rating
});
};
private _onThemedStarChange = (ev: React.FocusEvent, rating: number): void => {
this.setState({
themedStarRating: rating
});
};
private _getRatingComponentAriaLabel(rating: number, maxRating: number): string {
return `Rating value is ${rating} of ${maxRating}`;
}
}
ReactDOM.render(, document.getElementById('content'));