PromucFlow_constructor/app/client/src/utils/WidgetRegistry.tsx

213 lines
6.7 KiB
TypeScript
Raw Normal View History

2019-11-25 05:07:27 +00:00
import { WidgetProps } from "widgets/BaseWidget";
import ContainerWidget, { ContainerWidgetProps } from "widgets/ContainerWidget";
import TextWidget, { TextWidgetProps } from "widgets/TextWidget";
import InputWidget, { InputWidgetProps } from "widgets/InputWidget";
import SpinnerWidget, { SpinnerWidgetProps } from "widgets/SpinnerWidget";
import CheckboxWidget, { CheckboxWidgetProps } from "widgets/CheckboxWidget";
2019-03-21 12:10:32 +00:00
import RadioGroupWidget, {
2019-09-09 09:08:54 +00:00
RadioGroupWidgetProps,
2019-11-25 05:07:27 +00:00
} from "widgets/RadioGroupWidget";
2019-09-09 09:08:54 +00:00
import WidgetFactory from "./WidgetFactory";
import React from "react";
2019-11-25 05:07:27 +00:00
import ButtonWidget, { ButtonWidgetProps } from "widgets/ButtonWidget";
import DropdownWidget, { DropdownWidgetProps } from "widgets/DropdownWidget";
import ImageWidget, { ImageWidgetProps } from "widgets/ImageWidget";
import TableWidget, { TableWidgetProps } from "widgets/TableWidget";
2020-03-13 12:06:41 +00:00
import ChartWidget, { ChartWidgetProps } from "widgets/ChartWidget";
2019-11-04 14:22:50 +00:00
import FilePickerWidget, {
FilePickerWidgetProps,
2019-11-25 05:07:27 +00:00
} from "widgets/FilepickerWidget";
2019-11-06 12:12:41 +00:00
import DatePickerWidget, {
DatePickerWidgetProps,
2019-11-25 05:07:27 +00:00
} from "widgets/DatePickerWidget";
2020-03-06 09:45:21 +00:00
import FormWidget from "widgets/FormWidget";
import FormButtonWidget, {
FormButtonWidgetProps,
} from "widgets/FormButtonWidget";
2019-02-10 13:21:19 +00:00
class WidgetBuilderRegistry {
static registerWidgetBuilders() {
2019-11-19 12:44:58 +00:00
WidgetFactory.registerWidgetBuilder(
"CONTAINER_WIDGET",
{
buildWidget(
widgetData: ContainerWidgetProps<WidgetProps>,
): JSX.Element {
return <ContainerWidget {...widgetData} />;
},
2019-09-09 09:08:54 +00:00
},
2019-11-19 12:44:58 +00:00
ContainerWidget.getPropertyValidationMap(),
2020-01-17 09:28:26 +00:00
ContainerWidget.getDerivedPropertiesMap(),
2020-02-18 10:41:52 +00:00
ContainerWidget.getTriggerPropertyMap(),
2019-11-19 12:44:58 +00:00
);
2019-11-19 12:44:58 +00:00
WidgetFactory.registerWidgetBuilder(
"TEXT_WIDGET",
{
buildWidget(widgetData: TextWidgetProps): JSX.Element {
return <TextWidget {...widgetData} />;
},
2019-09-09 09:08:54 +00:00
},
2019-11-19 12:44:58 +00:00
TextWidget.getPropertyValidationMap(),
2020-01-17 09:28:26 +00:00
TextWidget.getDerivedPropertiesMap(),
2020-02-18 10:41:52 +00:00
TextWidget.getTriggerPropertyMap(),
2019-11-19 12:44:58 +00:00
);
2019-03-18 13:50:24 +00:00
2019-11-19 12:44:58 +00:00
WidgetFactory.registerWidgetBuilder(
"BUTTON_WIDGET",
{
buildWidget(widgetData: ButtonWidgetProps): JSX.Element {
return <ButtonWidget {...widgetData} />;
},
2019-09-09 09:08:54 +00:00
},
2019-11-19 12:44:58 +00:00
ButtonWidget.getPropertyValidationMap(),
2020-01-17 09:28:26 +00:00
ButtonWidget.getDerivedPropertiesMap(),
2020-02-18 10:41:52 +00:00
ButtonWidget.getTriggerPropertyMap(),
2019-11-19 12:44:58 +00:00
);
2019-11-19 12:44:58 +00:00
WidgetFactory.registerWidgetBuilder(
"SPINNER_WIDGET",
{
buildWidget(widgetData: SpinnerWidgetProps): JSX.Element {
return <SpinnerWidget {...widgetData} />;
},
2019-09-09 09:08:54 +00:00
},
2019-11-19 12:44:58 +00:00
SpinnerWidget.getPropertyValidationMap(),
2020-01-17 09:28:26 +00:00
SpinnerWidget.getDerivedPropertiesMap(),
2020-02-18 10:41:52 +00:00
SpinnerWidget.getTriggerPropertyMap(),
2019-11-19 12:44:58 +00:00
);
2019-11-19 12:44:58 +00:00
WidgetFactory.registerWidgetBuilder(
"INPUT_WIDGET",
{
buildWidget(widgetData: InputWidgetProps): JSX.Element {
return <InputWidget {...widgetData} />;
},
2019-09-09 09:08:54 +00:00
},
2019-11-19 12:44:58 +00:00
InputWidget.getPropertyValidationMap(),
2020-01-17 09:28:26 +00:00
InputWidget.getDerivedPropertiesMap(),
2020-02-18 10:41:52 +00:00
InputWidget.getTriggerPropertyMap(),
2019-11-19 12:44:58 +00:00
);
2019-03-21 12:10:32 +00:00
2019-11-19 12:44:58 +00:00
WidgetFactory.registerWidgetBuilder(
"CHECKBOX_WIDGET",
{
buildWidget(widgetData: CheckboxWidgetProps): JSX.Element {
return <CheckboxWidget {...widgetData} />;
},
2019-09-09 09:08:54 +00:00
},
2019-11-19 12:44:58 +00:00
CheckboxWidget.getPropertyValidationMap(),
2020-01-17 09:28:26 +00:00
CheckboxWidget.getDerivedPropertiesMap(),
2020-02-18 10:41:52 +00:00
ContainerWidget.getTriggerPropertyMap(),
2019-11-19 12:44:58 +00:00
);
2019-03-21 12:10:32 +00:00
2019-11-19 12:44:58 +00:00
WidgetFactory.registerWidgetBuilder(
"DROP_DOWN_WIDGET",
{
buildWidget(widgetData: DropdownWidgetProps): JSX.Element {
return <DropdownWidget {...widgetData} />;
},
2019-10-31 05:28:11 +00:00
},
2019-11-19 12:44:58 +00:00
DropdownWidget.getPropertyValidationMap(),
2020-01-17 09:28:26 +00:00
DropdownWidget.getDerivedPropertiesMap(),
2020-02-18 10:41:52 +00:00
DropdownWidget.getTriggerPropertyMap(),
2019-11-19 12:44:58 +00:00
);
2019-10-31 05:28:11 +00:00
2019-11-19 12:44:58 +00:00
WidgetFactory.registerWidgetBuilder(
"RADIO_GROUP_WIDGET",
{
buildWidget(widgetData: RadioGroupWidgetProps): JSX.Element {
return <RadioGroupWidget {...widgetData} />;
},
2019-09-09 09:08:54 +00:00
},
2019-11-19 12:44:58 +00:00
RadioGroupWidget.getPropertyValidationMap(),
2020-01-17 09:28:26 +00:00
RadioGroupWidget.getDerivedPropertiesMap(),
2020-02-18 10:41:52 +00:00
RadioGroupWidget.getTriggerPropertyMap(),
2019-11-19 12:44:58 +00:00
);
2019-11-19 12:44:58 +00:00
WidgetFactory.registerWidgetBuilder(
"IMAGE_WIDGET",
{
buildWidget(widgetData: ImageWidgetProps): JSX.Element {
return <ImageWidget {...widgetData} />;
},
},
2019-11-19 12:44:58 +00:00
ImageWidget.getPropertyValidationMap(),
2020-01-17 09:28:26 +00:00
ImageWidget.getDerivedPropertiesMap(),
2020-02-18 10:41:52 +00:00
ImageWidget.getTriggerPropertyMap(),
2019-11-19 12:44:58 +00:00
);
WidgetFactory.registerWidgetBuilder(
"TABLE_WIDGET",
{
buildWidget(widgetData: TableWidgetProps): JSX.Element {
return <TableWidget {...widgetData} />;
},
2019-10-31 10:10:57 +00:00
},
2019-11-19 12:44:58 +00:00
TableWidget.getPropertyValidationMap(),
2020-01-17 09:28:26 +00:00
TableWidget.getDerivedPropertiesMap(),
2020-02-18 10:41:52 +00:00
TableWidget.getTriggerPropertyMap(),
2019-11-19 12:44:58 +00:00
);
WidgetFactory.registerWidgetBuilder(
"FILE_PICKER_WIDGET",
{
buildWidget(widgetData: FilePickerWidgetProps): JSX.Element {
return <FilePickerWidget {...widgetData} />;
},
2019-11-04 14:22:50 +00:00
},
2019-11-19 12:44:58 +00:00
FilePickerWidget.getPropertyValidationMap(),
2020-01-17 09:28:26 +00:00
FilePickerWidget.getDerivedPropertiesMap(),
2020-02-18 10:41:52 +00:00
FilePickerWidget.getTriggerPropertyMap(),
2019-11-19 12:44:58 +00:00
);
WidgetFactory.registerWidgetBuilder(
"DATE_PICKER_WIDGET",
{
buildWidget(widgetData: DatePickerWidgetProps): JSX.Element {
return <DatePickerWidget {...widgetData} />;
},
2019-11-06 12:12:41 +00:00
},
2019-11-19 12:44:58 +00:00
DatePickerWidget.getPropertyValidationMap(),
2020-01-17 09:28:26 +00:00
DatePickerWidget.getDerivedPropertiesMap(),
2020-02-18 10:41:52 +00:00
DatePickerWidget.getTriggerPropertyMap(),
2019-11-19 12:44:58 +00:00
);
2020-03-13 12:06:41 +00:00
WidgetFactory.registerWidgetBuilder(
"CHART_WIDGET",
{
buildWidget(widgetData: ChartWidgetProps): JSX.Element {
return <ChartWidget {...widgetData} />;
},
},
ChartWidget.getPropertyValidationMap(),
ChartWidget.getDerivedPropertiesMap(),
ChartWidget.getTriggerPropertyMap(),
);
2020-03-06 09:45:21 +00:00
WidgetFactory.registerWidgetBuilder(
"FORM_WIDGET",
{
buildWidget(
widgetProps: ContainerWidgetProps<WidgetProps>,
): JSX.Element {
return <FormWidget {...widgetProps} />;
},
},
FormWidget.getPropertyValidationMap(),
FormWidget.getDerivedPropertiesMap(),
FormWidget.getTriggerPropertyMap(),
);
WidgetFactory.registerWidgetBuilder(
"FORM_BUTTON_WIDGET",
{
buildWidget(widgetProps: FormButtonWidgetProps): JSX.Element {
return <FormButtonWidget {...widgetProps} />;
},
},
FormButtonWidget.getPropertyValidationMap(),
FormButtonWidget.getDerivedPropertiesMap(),
FormButtonWidget.getTriggerPropertyMap(),
);
}
2019-02-10 13:21:19 +00:00
}
2019-09-09 09:08:54 +00:00
export default WidgetBuilderRegistry;