PromucFlow_constructor/app/client/src/reducers/entityReducers/widgetConfigReducer.tsx
Ankita Kinger c1e48f7486
feat: Refactor code for SAML integration (#12700)
* Implemented code splitting of some files for SAML integration

* Implemented code splitting of some more files for SAML integration

* updated redirect url component

* fixed an import statement

* fixed a unit test

* updated restart banner tooltip logic

* updated an import statement
2022-04-12 16:20:01 +05:30

53 lines
1.3 KiB
TypeScript

import { createImmerReducer } from "utils/AppsmithUtils";
import {
ReduxActionTypes,
ReduxAction,
} from "@appsmith/constants/ReduxActionConstants";
import { WidgetProps } from "widgets/BaseWidget";
const initialState: WidgetConfigReducerState = { config: {} };
export type WidgetBlueprint = {
view?: Array<{
type: string;
size?: { rows: number; cols: number };
position: { top?: number; left?: number };
props: Record<string, any>;
}>;
operations?: any;
};
export interface WidgetConfigProps {
rows: number;
columns: number;
blueprint?: WidgetBlueprint;
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;
}
export interface WidgetConfigReducerState {
config: Record<string, WidgetConfig>;
}
const widgetConfigReducer = createImmerReducer(initialState, {
[ReduxActionTypes.ADD_WIDGET_CONFIG]: (
state: WidgetConfigReducerState,
action: ReduxAction<WidgetConfig>,
) => {
state.config[action.payload.type] = action.payload;
},
});
export default widgetConfigReducer;