PromucFlow_constructor/app/client/src/reducers/entityReducers/canvasWidgetsReducer.tsx

50 lines
1.4 KiB
TypeScript
Raw Normal View History

import { createReducer } from "../../utils/AppsmithUtils";
import {
ReduxActionTypes,
2019-09-13 09:56:11 +00:00
LoadCanvasWidgetsPayload,
ReduxAction,
} from "../../constants/ReduxActionConstants";
import { WidgetProps } from "../../widgets/BaseWidget";
import { ContainerWidgetProps } from "../../widgets/ContainerWidget";
import { UpdateWidgetPropertyPayload } from "../../actions/controlActions";
const initialState: CanvasWidgetsReduxState = {};
2019-08-26 12:41:21 +00:00
export type FlattenedWidgetProps = ContainerWidgetProps<WidgetProps> & {
2019-08-29 11:22:09 +00:00
children?: string[];
};
2019-03-21 17:42:23 +00:00
const canvasWidgetsReducer = createReducer(initialState, {
[ReduxActionTypes.UPDATE_CANVAS]: (
2019-03-21 17:42:23 +00:00
state: CanvasWidgetsReduxState,
action: ReduxAction<LoadCanvasWidgetsPayload>,
2019-03-21 17:42:23 +00:00
) => {
return { ...action.payload.widgets };
2019-08-26 12:41:21 +00:00
},
[ReduxActionTypes.UPDATE_LAYOUT]: (
2019-08-26 12:41:21 +00:00
state: CanvasWidgetsReduxState,
action: ReduxAction<LoadCanvasWidgetsPayload>,
2019-08-26 12:41:21 +00:00
) => {
return { ...action.payload.widgets };
},
[ReduxActionTypes.UPDATE_WIDGET_PROPERTY]: (
state: CanvasWidgetsReduxState,
action: ReduxAction<UpdateWidgetPropertyPayload>,
) => {
const widget = state[action.payload.widgetId];
return {
state,
[action.payload.widgetId]: {
...widget,
[action.payload.propertyName]: action.payload.propertyValue,
},
};
},
});
export interface CanvasWidgetsReduxState {
[widgetId: string]: FlattenedWidgetProps;
}
export default canvasWidgetsReducer;