feat: 评分 事件

This commit is contained in:
liuzedong02 2022-02-21 14:48:43 +08:00
parent 8676cb286a
commit 0b32350151
3 changed files with 64 additions and 4 deletions

View File

@ -0,0 +1,35 @@
export default {
type: 'page',
title: '评分组件事件',
regions: ['body', 'toolbar', 'header'],
body: [
{
type: 'tpl',
tpl: 'InputRating组件',
inline: false,
wrapperComponent: 'h2'
},
{
type: 'form',
debug: true,
body: [
{
name: "input-rating",
type: "input-rating",
option: "事件",
onEvent: {
change: {
actions: [
{
actionType: 'toast',
msgType: 'info',
msg: '派发change事件'
}
]
}
}
}
]
}
]
};

View File

@ -81,6 +81,7 @@ import TabsEventSchema from './EventAction/TabsEvent';
import UploadEventSchema from './EventAction/UploadEvent';
import SelectEventActionSchema from './EventAction/SelectEvent';
import ButtonEventActionSchema from './EventAction/ButtonEvent';
import InputRatingEventSchema from './EventAction/InputRatingEvent';
import WizardSchema from './Wizard';
import ChartSchema from './Chart';
import EChartsEditorSchema from './ECharts';
@ -574,6 +575,11 @@ export const examples = [
label: '标签页组件',
path: 'examples/event/tabs',
component: makeSchemaRenderer(TabsEventSchema)
},
{
label: '评分组件',
path: 'examples/event/input-rating',
component: makeSchemaRenderer(InputRatingEventSchema)
}
]
},

View File

@ -1,5 +1,6 @@
import React from 'react';
import {FormItem, FormControlProps, FormBaseControl} from './Item';
import {autobind, createObject} from '../../utils/helper';
import Rating, {textPositionType} from '../../components/Rating';
/**
@ -84,6 +85,27 @@ export default class RatingControl extends React.Component<RatingProps, any> {
readOnly: false
};
async dispatchChangeEvent(eventName: string, eventData: any = {}) {
const {dispatchEvent, data} = this.props;
let rendererEvent = await dispatchEvent(
eventName,
createObject(data, {
value: eventData,
})
);
return rendererEvent?.prevented ?? false;
}
@autobind
async handleChange(value: number) {
const {onChange} = this.props;
const prevented = await this.dispatchChangeEvent('change', value);
prevented || (onChange && onChange(value));
}
render() {
const {
className,
@ -92,7 +114,6 @@ export default class RatingControl extends React.Component<RatingProps, any> {
half,
readOnly,
disabled,
onChange,
onHoverChange,
allowClear,
char,
@ -122,9 +143,7 @@ export default class RatingControl extends React.Component<RatingProps, any> {
charClassName={charClassName}
textClassName={textClassName}
textPosition={textPosition}
onChange={(value: number) => {
onChange && onChange(value);
}}
onChange={this.handleChange}
onHoverChange={(value: number) => {
onHoverChange && onHoverChange(value);
}}