* Updated test * updated assertions * Resizing image to take full width of table cell * updated assertion * Stop updating dynamicBindingPathList directly from widget * Fix selectedRow and selectedRows computations * Fix primaryColumns computations * Updated test for derived column * Added tests for computed value * Added check clear data * Reordering of test * updated common method * Made image size as 100% of table cell size * add templating logic * Updated flow and dsl * Clear old primary columns * Updated testname * updated assertion * use evaluated values for children * Fix primary columns update on component mount and component update * add isArray check * remove property pane enhancement reducer * add property pane enhancement reducer * disable items other than template + fix running property enchancment on drop of list widget * disbled drag, resize, settingsControl, drag for items other than template * add grid options * uncomment the widget operation for add child for grid children * handle delete scenario for child widget in list widget * WIP: Use the new delete and update property features * add listdsl.json for testcases * add test cases for correct no. of items being rendered * add test cases currentItem binding in list widget * change dragEnabled to dragDisabled * change resizeEnabled to resizeDisabled * change settingsControlEnabled to settingsControlDisabled * change dropEnabled to dropDisabled * update settingsControlDisabled default value * Use deleteProperties in propertyControls * Fix unsetting of array indices when deleting widget properties * remove old TableWidget.tsx file * Fix derived column property update on primary column property update * Handle undefined primary columns * Fix filepicker immutable prop issue * Fix object.freeze issue when adding ids to the property pane configuration * fix widget issue in grid * Fix column actions dynamicBindingPathList inclusion issue * remove consoles + fix typo around batch update * Remove redundant tests * js binding test for date picker * hydate enhancement map on copy list widget * check for dynamicleaf * fixes * improve check * fix getNextWidgetName * update template in list widget when copying * updating template copy logic when copying widget * update dynamicBindingPathList in copied widget * Add path parameter to hidden functions in property pane configs * fix copy bug when copying list widget * add computed list property control * Remove time column type Fix editor prompt for currentRow Fix undefined derivedColumns scenario Remove validations for primaryColums and derivedColumns Fix section toggle for video, image and button column types * Fix table widget actions and custom column migrations * Add logs for cyclical dependency map ♻️ * Process array differences * add property control for list widget * Fix onClick migrations * Property pane config parity * binding and trigger paths from the property pane config (#2920) * try react virtualized library * Fix unit test * Fix unit test ✅ * Fix minor issues in table widget * Add default meta props to binding paths to ensure eval and validation * Dummy commit 🎉 * Remove unnecessary datepicker test Fix chart data as string issue * Achieve table column sorting and resizing parity with release * handle scenario where last column isn't available to access * Fix for panel config path not existing in the widget * Fix bindings in currentRow (default) Add dummy property pane config for canvas widget * Update canvas widgets with dynamicPathLists on delete of property paths * Add all diffs to change paths and trim later * Add back default properties 🚶🏻♂️ * Use object based paths instead of arrays for primaryColumns and derivedColumns * Fix issue in reordered columns * Fix inccorect update order * add virtualized list * Fix failing property pane tests * minor change * minor list widget change * Remove .vscode from git * Rename ads to alloy Fix isVisible in list widget * move grid component to widget folder * fix import in widget registry * add sticky row in virtualized list * add sticky container * Fix Height of grid widget items container * fix dragging of items in children other than template children * update list widget * update list widget * Fix padding in list widget * hide scrollbar in list widget list * fix copy bug in list widget * regenrate enhancement map on undo delete widget * Use enhancementmap for autocomplete in list widget Basic styles for list widget scrollbar * add custom control in widget config * minor commit * update scrollbar styles * remove unused variable * fix typo in custom control * comment out test cases * remove unused imports * remove unused imports * add JSON stringify in interweave * add noPad styling in dragLayer for noPad prop * implement grid gap * add list item background color prop * add white color in color picker control * fix gap in last list item * remove onBeforeParse in textcomponent * remove virtualization in grid widget * allow overflow-y * add onListItemClick action * add beta label * add pagination * fix actions in pagination in list widget * add list widget icon * add list background color default value * remove extra div * fix pagination issue * fix list widget crashing on perpage change * extract child operation function to widgetblueprint saga * refactor enhancements * add enhancement hook * refactor propertyUpdate hook enhancment * remove enhacement map * revert renaming ads to alloy * add autopagination * Cleanup unused vars Re-write loop using map Fix binding with external input widget * update default background color * remove unnessary scrol + fix pagination per page * remove console.log * use grid gap in pixel instead of snap * fix list widget tests for binding * add tests for on click action and pagination * remove unnecessary imports * remove overflow hidden in list component * Add feature to enable template actions * update property pane help text for list widget * disable pagination in editor view * update property pane options * add test case for action * uncomment tests * fix grid gap validation * update test cases * fix property pane opening issue for list tempalte * Disable form widgets in list widget * fix template issue for actions * add validation tests for list data * update starting template * add selectedRow + enable pagination in edit mode * remove extra padding in list widget + popper fix on settingDisabled * add stop propagation for button click * fix click event in edit mode * disallow filepicker widget for list widget * add test for list widget entity definition for selectItem * remove unused imports * fix test * remove evaluated value for list child widgets * add comment * remove log * fix copying bug in list widget * add check for not allowing template to copy * fix test * add test for property pane actions * remove unused import * add draglayercomponent test * add test for draggable component * add test for evaluatedvalue popup * add test for messages.ts * add test for widgeticons * add test for property pane selector * add test for widget config response * start testing widget configresponse * add test for enhancements in widget config * add test for codeeditor * add test for base widget + list widget * add test for executeWidgetBlueprintChildOperations * remove unused import * add test for widget operation utils * remove unused import * add test for handleSpecificCasesWhilePasting * remove unused function * remove unused import * add empty list styling * resolve all review comments * fix message test * add test for widget operation utils * fix merge conflicts * move validations in property config Co-authored-by: Abhinav Jha <abhinav@appsmith.com> Co-authored-by: nandan.anantharamu <nandan.anantharamu@thoughtspot.com> Co-authored-by: vicky-primathon.in <vicky.bansal@primathon.in> Co-authored-by: Pawan Kumar <pawankumar@Pawans-MacBook-Pro.local> Co-authored-by: Piyush <piyush@codeitout.com> Co-authored-by: hetunandu <hetu@appsmith.com> Co-authored-by: Hetu Nandu <hetunandu@gmail.com> Co-authored-by: root <root@DESKTOP-9GENCK0.localdomain>
277 lines
5.7 KiB
TypeScript
277 lines
5.7 KiB
TypeScript
import { WidgetType } from "constants/WidgetConstants";
|
|
import {
|
|
EvaluationReduxAction,
|
|
ReduxAction,
|
|
ReduxActionTypes,
|
|
UpdateCanvasPayload,
|
|
} from "constants/ReduxActionConstants";
|
|
import AnalyticsUtil from "utils/AnalyticsUtil";
|
|
import { WidgetOperation } from "widgets/BaseWidget";
|
|
import { FetchPageRequest, PageLayout, SavePageResponse } from "api/PageApi";
|
|
import { APP_MODE, UrlDataState } from "reducers/entityReducers/appReducer";
|
|
import { CanvasWidgetsReduxState } from "reducers/entityReducers/canvasWidgetsReducer";
|
|
|
|
export interface FetchPageListPayload {
|
|
applicationId: string;
|
|
mode: APP_MODE;
|
|
}
|
|
|
|
export const fetchPageList = (
|
|
applicationId: string,
|
|
mode: APP_MODE,
|
|
): ReduxAction<FetchPageListPayload> => {
|
|
return {
|
|
type: ReduxActionTypes.FETCH_PAGE_LIST_INIT,
|
|
payload: {
|
|
applicationId,
|
|
mode,
|
|
},
|
|
};
|
|
};
|
|
|
|
export const fetchPage = (pageId: string): ReduxAction<FetchPageRequest> => {
|
|
return {
|
|
type: ReduxActionTypes.FETCH_PAGE_INIT,
|
|
payload: {
|
|
id: pageId,
|
|
},
|
|
};
|
|
};
|
|
|
|
export const fetchPublishedPage = (pageId: string, bustCache = false) => ({
|
|
type: ReduxActionTypes.FETCH_PUBLISHED_PAGE_INIT,
|
|
payload: {
|
|
pageId,
|
|
bustCache,
|
|
},
|
|
});
|
|
|
|
export const fetchPageSuccess = (
|
|
postEvalActions: ReduxAction<unknown>[],
|
|
): EvaluationReduxAction<unknown> => {
|
|
return {
|
|
type: ReduxActionTypes.FETCH_PAGE_SUCCESS,
|
|
payload: {},
|
|
postEvalActions,
|
|
};
|
|
};
|
|
|
|
export const fetchPublishedPageSuccess = (
|
|
postEvalActions: ReduxAction<unknown>[],
|
|
): EvaluationReduxAction<undefined> => ({
|
|
type: ReduxActionTypes.FETCH_PUBLISHED_PAGE_SUCCESS,
|
|
postEvalActions,
|
|
payload: undefined,
|
|
});
|
|
|
|
export const updateCurrentPage = (id: string) => ({
|
|
type: ReduxActionTypes.SWITCH_CURRENT_PAGE_ID,
|
|
payload: { id },
|
|
});
|
|
|
|
export const initCanvasLayout = (
|
|
payload: UpdateCanvasPayload,
|
|
): ReduxAction<UpdateCanvasPayload> => {
|
|
return {
|
|
type: ReduxActionTypes.INIT_CANVAS_LAYOUT,
|
|
payload,
|
|
};
|
|
};
|
|
|
|
export const savePageSuccess = (payload: SavePageResponse) => {
|
|
return {
|
|
type: ReduxActionTypes.SAVE_PAGE_SUCCESS,
|
|
payload,
|
|
};
|
|
};
|
|
|
|
export const updateWidgetNameSuccess = () => {
|
|
return {
|
|
type: ReduxActionTypes.UPDATE_WIDGET_NAME_SUCCESS,
|
|
};
|
|
};
|
|
|
|
export const deletePageSuccess = () => {
|
|
return {
|
|
type: ReduxActionTypes.DELETE_PAGE_SUCCESS,
|
|
};
|
|
};
|
|
|
|
export const updateAndSaveLayout = (
|
|
widgets: CanvasWidgetsReduxState,
|
|
isRetry?: boolean,
|
|
) => {
|
|
return {
|
|
type: ReduxActionTypes.UPDATE_LAYOUT,
|
|
payload: { widgets, isRetry },
|
|
};
|
|
};
|
|
|
|
export const saveLayout = () => {
|
|
return {
|
|
type: ReduxActionTypes.SAVE_PAGE_INIT,
|
|
};
|
|
};
|
|
|
|
export const createPage = (
|
|
applicationId: string,
|
|
pageName: string,
|
|
layouts: Partial<PageLayout>[],
|
|
) => {
|
|
AnalyticsUtil.logEvent("CREATE_PAGE", {
|
|
pageName,
|
|
});
|
|
return {
|
|
type: ReduxActionTypes.CREATE_PAGE_INIT,
|
|
payload: {
|
|
applicationId,
|
|
name: pageName,
|
|
layouts,
|
|
},
|
|
};
|
|
};
|
|
|
|
export const clonePageInit = (pageId: string) => {
|
|
return {
|
|
type: ReduxActionTypes.CLONE_PAGE_INIT,
|
|
payload: {
|
|
id: pageId,
|
|
},
|
|
};
|
|
};
|
|
|
|
export const clonePageSuccess = (
|
|
pageId: string,
|
|
pageName: string,
|
|
layoutId: string,
|
|
) => {
|
|
return {
|
|
type: ReduxActionTypes.CLONE_PAGE_SUCCESS,
|
|
payload: {
|
|
pageId,
|
|
pageName,
|
|
layoutId,
|
|
},
|
|
};
|
|
};
|
|
|
|
export const updatePage = (id: string, name: string, isHidden: boolean) => {
|
|
return {
|
|
type: ReduxActionTypes.UPDATE_PAGE_INIT,
|
|
payload: {
|
|
id,
|
|
name,
|
|
isHidden,
|
|
},
|
|
};
|
|
};
|
|
|
|
export type WidgetAddChild = {
|
|
widgetId: string;
|
|
widgetName?: string;
|
|
type: WidgetType;
|
|
leftColumn: number;
|
|
topRow: number;
|
|
columns: number;
|
|
rows: number;
|
|
parentRowSpace: number;
|
|
parentColumnSpace: number;
|
|
newWidgetId: string;
|
|
tabId: string;
|
|
props?: Record<string, any>;
|
|
};
|
|
|
|
export type WidgetMove = {
|
|
widgetId: string;
|
|
leftColumn: number;
|
|
topRow: number;
|
|
parentId: string;
|
|
/*
|
|
If newParentId is different from what we have in redux store,
|
|
then we have to delete this,
|
|
as it has been dropped in another container somewhere.
|
|
*/
|
|
newParentId: string;
|
|
};
|
|
|
|
export type WidgetRemoveChild = {
|
|
widgetId: string;
|
|
childWidgetId: string;
|
|
};
|
|
|
|
export type WidgetDelete = {
|
|
widgetId?: string;
|
|
parentId?: string;
|
|
disallowUndo?: boolean;
|
|
isShortcut?: boolean;
|
|
};
|
|
|
|
export type WidgetResize = {
|
|
widgetId: string;
|
|
leftColumn: number;
|
|
rightColumn: number;
|
|
topRow: number;
|
|
bottomRow: number;
|
|
};
|
|
|
|
export type WidgetAddChildren = {
|
|
widgetId: string;
|
|
children: Array<{
|
|
type: WidgetType;
|
|
widgetId: string;
|
|
parentId: string;
|
|
parentRowSpace: number;
|
|
parentColumnSpace: number;
|
|
leftColumn: number;
|
|
rightColumn: number;
|
|
topRow: number;
|
|
bottomRow: number;
|
|
isLoading: boolean;
|
|
}>;
|
|
};
|
|
|
|
export const updateWidget = (
|
|
operation: WidgetOperation,
|
|
widgetId: string,
|
|
payload: any,
|
|
): ReduxAction<
|
|
WidgetAddChild | WidgetMove | WidgetResize | WidgetDelete | WidgetAddChildren
|
|
> => {
|
|
return {
|
|
type: ReduxActionTypes["WIDGET_" + operation],
|
|
payload: { widgetId, ...payload },
|
|
};
|
|
};
|
|
|
|
export const setUrlData = (
|
|
payload: UrlDataState,
|
|
): ReduxAction<UrlDataState> => {
|
|
return {
|
|
type: ReduxActionTypes.SET_URL_DATA,
|
|
payload,
|
|
};
|
|
};
|
|
|
|
export const setAppMode = (payload: APP_MODE): ReduxAction<APP_MODE> => {
|
|
return {
|
|
type: ReduxActionTypes.SET_APP_MODE,
|
|
payload,
|
|
};
|
|
};
|
|
|
|
export const updateAppTransientStore = (
|
|
payload: Record<string, unknown>,
|
|
): ReduxAction<Record<string, unknown>> => ({
|
|
type: ReduxActionTypes.UPDATE_APP_TRANSIENT_STORE,
|
|
payload,
|
|
});
|
|
|
|
export const updateAppPersistentStore = (
|
|
payload: Record<string, unknown>,
|
|
): ReduxAction<Record<string, unknown>> => {
|
|
return {
|
|
type: ReduxActionTypes.UPDATE_APP_PERSISTENT_STORE,
|
|
payload,
|
|
};
|
|
};
|