From 6bd89d65a15e1ad0304e7b305387fccc599f7944 Mon Sep 17 00:00:00 2001 From: Nikhil Nandagopal Date: Thu, 12 Sep 2019 17:49:46 +0530 Subject: [PATCH] added action events to widgets --- app/client/src/api/ActionAPI.tsx | 22 ++++++++------------ app/client/src/constants/ActionConstants.tsx | 2 +- app/client/src/widgets/AlertWidget.tsx | 2 ++ app/client/src/widgets/ButtonWidget.tsx | 4 ++-- app/client/src/widgets/CheckboxWidget.tsx | 2 ++ app/client/src/widgets/DatePickerWidget.tsx | 4 +++- app/client/src/widgets/DropdownWidget.tsx | 2 ++ app/client/src/widgets/RadioGroupWidget.tsx | 2 ++ app/client/src/widgets/TableWidget.tsx | 5 ++++- 9 files changed, 27 insertions(+), 18 deletions(-) diff --git a/app/client/src/api/ActionAPI.tsx b/app/client/src/api/ActionAPI.tsx index 57cd3d4eff..e17c457a8e 100644 --- a/app/client/src/api/ActionAPI.tsx +++ b/app/client/src/api/ActionAPI.tsx @@ -1,5 +1,4 @@ import Api, { HttpMethod } from "./Api" -import { ContainerWidgetProps } from "../widgets/ContainerWidget" import { ApiResponse } from "./ApiResponses" import { APIRequest } from './ApiRequests'; @@ -25,36 +24,33 @@ export interface QueryConfig { queryString: string } -export interface PageResponse extends ApiResponse { - pageWidget: ContainerWidgetProps; +export interface ActionCreatedResponse extends ApiResponse { + actionId: string } -export interface SavePageResponse { - pageId: string; +export interface ActionUpdatedResponse extends ActionCreatedResponse { + } class ActionAPI extends Api { static url = "/actions" - static createAPI(createAPI: CreateActionRequest): Promise { + static createAPI(createAPI: CreateActionRequest): Promise { return Api.post(ActionAPI.url, createAPI) } - static updateAPI(updateAPI: UpdateActionRequest): Promise { + static updateAPI(updateAPI: UpdateActionRequest): Promise { return Api.post(ActionAPI.url, updateAPI) } - static createQuery(createQuery: CreateActionRequest): Promise { + static createQuery(createQuery: CreateActionRequest): Promise { return Api.post(ActionAPI.url, createQuery) } - static updateQuery(updateQuery: UpdateActionRequest): Promise { + static updateQuery(updateQuery: UpdateActionRequest): Promise { return Api.post(ActionAPI.url, updateQuery) } - + } - - - export default ActionAPI diff --git a/app/client/src/constants/ActionConstants.tsx b/app/client/src/constants/ActionConstants.tsx index 6098537366..9e53c08e35 100644 --- a/app/client/src/constants/ActionConstants.tsx +++ b/app/client/src/constants/ActionConstants.tsx @@ -20,7 +20,7 @@ export type ActionType = | "EXECUTE_JS" | "SET_VALUE" | "DOWNLOAD_DATA" - + export interface ActionPayload { actionType: ActionType contextParams: Record diff --git a/app/client/src/widgets/AlertWidget.tsx b/app/client/src/widgets/AlertWidget.tsx index 9925ceed27..5afef40fb7 100644 --- a/app/client/src/widgets/AlertWidget.tsx +++ b/app/client/src/widgets/AlertWidget.tsx @@ -2,6 +2,7 @@ import React from "react"; import BaseWidget, { IWidgetProps, IWidgetState } from "./BaseWidget"; import { WidgetType } from "../constants/WidgetConstants"; import CalloutComponent from "../editorComponents/CalloutComponent"; +import { ActionPayload } from '../constants/ActionConstants'; class AlertWidget extends BaseWidget { getPageView() { @@ -23,6 +24,7 @@ export interface AlertWidgetProps extends IWidgetProps { intent: MessageIntent header: string message: string + onPrimaryClick: ActionPayload[] } export default AlertWidget; diff --git a/app/client/src/widgets/ButtonWidget.tsx b/app/client/src/widgets/ButtonWidget.tsx index 59108cc927..7f6a77544c 100644 --- a/app/client/src/widgets/ButtonWidget.tsx +++ b/app/client/src/widgets/ButtonWidget.tsx @@ -2,6 +2,7 @@ import * as React from "react" import BaseWidget, { IWidgetProps, IWidgetState } from "./BaseWidget" import { WidgetType } from "../constants/WidgetConstants" import ButtonComponent from "../editorComponents/ButtonComponent" +import { ActionPayload } from '../constants/ActionConstants'; class ButtonWidget extends BaseWidget { @@ -21,13 +22,12 @@ class ButtonWidget extends BaseWidget { } } -export - export type ButtonStyle = "PRIMARY_BUTTON" | "SECONDARY_BUTTON" | "SUCCESS_BUTTON" | "DANGER_BUTTON" export interface ButtonWidgetProps extends IWidgetProps { text?: string; buttonStyle?: ButtonStyle + onClick?: ActionPayload[] } export default ButtonWidget diff --git a/app/client/src/widgets/CheckboxWidget.tsx b/app/client/src/widgets/CheckboxWidget.tsx index b4937d896f..415061e039 100644 --- a/app/client/src/widgets/CheckboxWidget.tsx +++ b/app/client/src/widgets/CheckboxWidget.tsx @@ -2,6 +2,7 @@ import React from "react" import BaseWidget, { IWidgetProps, IWidgetState } from "./BaseWidget" import { WidgetType } from "../constants/WidgetConstants" import CheckboxComponent from "../editorComponents/CheckboxComponent" +import { ActionPayload } from '../constants/ActionConstants'; class CheckboxWidget extends BaseWidget { getPageView() { @@ -24,6 +25,7 @@ class CheckboxWidget extends BaseWidget { export interface CheckboxWidgetProps extends IWidgetProps { label: string defaultCheckedState: boolean + onCheckChange?: ActionPayload[] } export default CheckboxWidget diff --git a/app/client/src/widgets/DatePickerWidget.tsx b/app/client/src/widgets/DatePickerWidget.tsx index 85bc58c8a4..3bbe36886a 100644 --- a/app/client/src/widgets/DatePickerWidget.tsx +++ b/app/client/src/widgets/DatePickerWidget.tsx @@ -1,7 +1,7 @@ import React from "react"; import BaseWidget, { IWidgetProps, IWidgetState } from "./BaseWidget"; import { WidgetType } from "../constants/WidgetConstants"; -import { Moment } from 'moment'; +import { ActionPayload } from '../constants/ActionConstants'; class DatePickerWidget extends BaseWidget< DatePickerWidgetProps, @@ -29,6 +29,8 @@ export interface DatePickerWidgetProps extends IWidgetProps { enableTime: boolean label: string datePickerType: DatePickerType + onDateSelected: ActionPayload[] + onDateRangeSelected: ActionPayload[] } export default DatePickerWidget; diff --git a/app/client/src/widgets/DropdownWidget.tsx b/app/client/src/widgets/DropdownWidget.tsx index 1b7b50fd68..2704b8914f 100644 --- a/app/client/src/widgets/DropdownWidget.tsx +++ b/app/client/src/widgets/DropdownWidget.tsx @@ -1,6 +1,7 @@ import React from "react"; import BaseWidget, { IWidgetProps, IWidgetState } from "./BaseWidget"; import { WidgetType } from "../constants/WidgetConstants"; +import { ActionPayload } from '../constants/ActionConstants'; class DropdownWidget extends BaseWidget { @@ -26,6 +27,7 @@ export interface DropdownWidgetProps extends IWidgetProps { label?: string type: SelectionType options?: DropdownOption[] + onOptionSelected?: ActionPayload[] } export default DropdownWidget; diff --git a/app/client/src/widgets/RadioGroupWidget.tsx b/app/client/src/widgets/RadioGroupWidget.tsx index 9f6bedd2d5..900febf079 100644 --- a/app/client/src/widgets/RadioGroupWidget.tsx +++ b/app/client/src/widgets/RadioGroupWidget.tsx @@ -3,6 +3,7 @@ import BaseWidget, { IWidgetProps, IWidgetState } from "./BaseWidget" import { WidgetType } from "../constants/WidgetConstants" import RadioGroupComponent from "../editorComponents/RadioGroupComponent" import { IOptionProps } from "@blueprintjs/core" +import { ActionPayload } from '../constants/ActionConstants'; class RadioGroupWidget extends BaseWidget< RadioGroupWidgetProps, @@ -36,6 +37,7 @@ export interface RadioGroupWidgetProps extends IWidgetProps { label: string options: RadioOption[] defaultOptionValue: string + onOptionSelected?: ActionPayload[] } export default RadioGroupWidget diff --git a/app/client/src/widgets/TableWidget.tsx b/app/client/src/widgets/TableWidget.tsx index 9ecdfcd161..096b90f62d 100644 --- a/app/client/src/widgets/TableWidget.tsx +++ b/app/client/src/widgets/TableWidget.tsx @@ -1,7 +1,7 @@ import React from "react"; import BaseWidget, { IWidgetProps, IWidgetState } from "./BaseWidget"; import { WidgetType } from "../constants/WidgetConstants"; -import TextComponent from "../editorComponents/TextComponent"; +import { ActionPayload } from '../constants/ActionConstants'; class TableWidget extends BaseWidget { @@ -22,6 +22,9 @@ export interface TableWidgetProps extends IWidgetProps { pageKey?: string; label: string tableData?: object[] + onPageChange?: ActionPayload[] + onRowSelected?: ActionPayload[] + onColumnActionClick?: Record } export default TableWidget;