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

50 lines
1.3 KiB
TypeScript
Raw Normal View History

import { createImmerReducer } from "utils/AppsmithUtils";
2019-11-25 05:07:27 +00:00
import { ReduxActionTypes, ReduxAction } from "constants/ReduxActionConstants";
import { WidgetProps } from "widgets/BaseWidget";
const initialState: WidgetConfigReducerState = { config: {} };
2019-09-12 08:11:25 +00:00
2020-03-06 09:45:21 +00:00
export type WidgetBlueprint = {
view?: Array<{
2020-03-06 09:45:21 +00:00
type: string;
size?: { rows: number; cols: number };
2020-03-06 09:45:21 +00:00
position: { top?: number; left?: number };
props: Record<string, any>;
}>;
operations?: any;
2020-03-06 09:45:21 +00:00
};
2019-09-12 08:11:25 +00:00
export interface WidgetConfigProps {
rows: number;
columns: number;
2020-03-06 09:45:21 +00:00
blueprint?: WidgetBlueprint;
2020-04-03 09:32:13 +00:00
widgetName: string;
enhancements?: Record<string, unknown>; // TODO(abhinav): SPECIFY TYPES
}
export interface WidgetConfig
extends Partial<WidgetProps>,
Omit<WidgetConfigProps, "widgetName"> {
type: string;
hideCard: boolean;
displayName: string;
key: string;
isCanvas?: boolean;
needsMeta?: boolean;
2019-09-12 08:11:25 +00:00
}
export interface WidgetConfigReducerState {
config: Record<string, WidgetConfig>;
2019-09-12 08:11:25 +00:00
}
const widgetConfigReducer = createImmerReducer(initialState, {
[ReduxActionTypes.ADD_WIDGET_CONFIG]: (
2019-09-12 08:11:25 +00:00
state: WidgetConfigReducerState,
action: ReduxAction<WidgetConfig>,
2019-09-12 08:11:25 +00:00
) => {
state.config[action.payload.type] = action.payload;
},
});
2019-09-12 08:11:25 +00:00
export default widgetConfigReducer;