Merge pull request #4946 from appsmithorg/FIX/4875-model-close-icon-reference-update
FIX #4875 : update modal onclick reference for same modal while pasting modal
This commit is contained in:
commit
d54dbd1596
|
|
@ -204,4 +204,184 @@ describe("WidgetOperationSaga", () => {
|
||||||
"template.Text2.text",
|
"template.Text2.text",
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should returns correct close model reference name after executing handleSpecificCasesWhilePasting", async () => {
|
||||||
|
const result = handleSpecificCasesWhilePasting(
|
||||||
|
{
|
||||||
|
widgetName: "Modal1Copy",
|
||||||
|
rightColumn: 24,
|
||||||
|
detachFromLayout: true,
|
||||||
|
widgetId: "k441huwm77",
|
||||||
|
topRow: 34,
|
||||||
|
bottomRow: 58,
|
||||||
|
parentRowSpace: 10,
|
||||||
|
canOutsideClickClose: true,
|
||||||
|
type: "MODAL_WIDGET",
|
||||||
|
canEscapeKeyClose: true,
|
||||||
|
version: 1,
|
||||||
|
parentId: "0",
|
||||||
|
shouldScrollContents: true,
|
||||||
|
isLoading: false,
|
||||||
|
parentColumnSpace: 17.21875,
|
||||||
|
size: "MODAL_SMALL",
|
||||||
|
leftColumn: 0,
|
||||||
|
children: ["ihxw5r23hd"],
|
||||||
|
renderMode: "CANVAS",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
k441huwm77: {
|
||||||
|
widgetName: "Modal1Copy",
|
||||||
|
rightColumn: 24,
|
||||||
|
detachFromLayout: true,
|
||||||
|
widgetId: "k441huwm77",
|
||||||
|
topRow: 34,
|
||||||
|
bottomRow: 58,
|
||||||
|
parentRowSpace: 10,
|
||||||
|
canOutsideClickClose: true,
|
||||||
|
type: "MODAL_WIDGET",
|
||||||
|
canEscapeKeyClose: true,
|
||||||
|
version: 1,
|
||||||
|
parentId: "0",
|
||||||
|
shouldScrollContents: true,
|
||||||
|
isLoading: false,
|
||||||
|
parentColumnSpace: 17.21875,
|
||||||
|
size: "MODAL_SMALL",
|
||||||
|
leftColumn: 0,
|
||||||
|
children: ["ihxw5r23hd"],
|
||||||
|
renderMode: "CANVAS",
|
||||||
|
},
|
||||||
|
suhkuyfpk3: {
|
||||||
|
widgetName: "Icon1Copy",
|
||||||
|
rightColumn: 64,
|
||||||
|
onClick: "{{closeModal('Modal1')}}",
|
||||||
|
color: "#040627",
|
||||||
|
iconName: "cross",
|
||||||
|
widgetId: "suhkuyfpk3",
|
||||||
|
topRow: 1,
|
||||||
|
bottomRow: 5,
|
||||||
|
isVisible: true,
|
||||||
|
type: "ICON_WIDGET",
|
||||||
|
version: 1,
|
||||||
|
parentId: "ihxw5r23hd",
|
||||||
|
isLoading: false,
|
||||||
|
leftColumn: 56,
|
||||||
|
iconSize: 24,
|
||||||
|
renderMode: "CANVAS",
|
||||||
|
parentColumnSpace: 2,
|
||||||
|
parentRowSpace: 3,
|
||||||
|
},
|
||||||
|
twnxjwy3r1: {
|
||||||
|
widgetName: "Button1Copy",
|
||||||
|
rightColumn: 48,
|
||||||
|
onClick: "{{closeModal('Modal1')}}",
|
||||||
|
isDefaultClickDisabled: true,
|
||||||
|
widgetId: "twnxjwy3r1",
|
||||||
|
buttonStyle: "SECONDARY_BUTTON",
|
||||||
|
topRow: 16,
|
||||||
|
bottomRow: 20,
|
||||||
|
isVisible: true,
|
||||||
|
type: "BUTTON_WIDGET",
|
||||||
|
version: 1,
|
||||||
|
parentId: "ihxw5r23hd",
|
||||||
|
isLoading: false,
|
||||||
|
dynamicTriggerPathList: [
|
||||||
|
{
|
||||||
|
key: "onClick",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
leftColumn: 36,
|
||||||
|
dynamicBindingPathList: [],
|
||||||
|
text: "Cancel",
|
||||||
|
isDisabled: false,
|
||||||
|
renderMode: "CANVAS",
|
||||||
|
parentColumnSpace: 2,
|
||||||
|
parentRowSpace: 3,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Modal1: "Modal1Copy",
|
||||||
|
Canvas1: "Canvas1Copy",
|
||||||
|
Icon1: "Icon1Copy",
|
||||||
|
Text1: "Text1Copy",
|
||||||
|
Button1: "Button1Copy",
|
||||||
|
Button2: "Button2Copy",
|
||||||
|
},
|
||||||
|
[
|
||||||
|
{
|
||||||
|
widgetName: "Modal1Copy",
|
||||||
|
rightColumn: 24,
|
||||||
|
detachFromLayout: true,
|
||||||
|
widgetId: "k441huwm77",
|
||||||
|
topRow: 34,
|
||||||
|
bottomRow: 58,
|
||||||
|
parentRowSpace: 10,
|
||||||
|
canOutsideClickClose: true,
|
||||||
|
type: "MODAL_WIDGET",
|
||||||
|
canEscapeKeyClose: true,
|
||||||
|
version: 1,
|
||||||
|
parentId: "0",
|
||||||
|
shouldScrollContents: true,
|
||||||
|
isLoading: false,
|
||||||
|
parentColumnSpace: 17.21875,
|
||||||
|
size: "MODAL_SMALL",
|
||||||
|
leftColumn: 0,
|
||||||
|
children: ["ihxw5r23hd"],
|
||||||
|
renderMode: "CANVAS",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
widgetName: "Icon1Copy",
|
||||||
|
rightColumn: 64,
|
||||||
|
onClick: "{{closeModal('Modal1')}}",
|
||||||
|
color: "#040627",
|
||||||
|
iconName: "cross",
|
||||||
|
widgetId: "suhkuyfpk3",
|
||||||
|
topRow: 1,
|
||||||
|
bottomRow: 5,
|
||||||
|
isVisible: true,
|
||||||
|
type: "ICON_WIDGET",
|
||||||
|
version: 1,
|
||||||
|
parentId: "ihxw5r23hd",
|
||||||
|
isLoading: false,
|
||||||
|
leftColumn: 56,
|
||||||
|
iconSize: 24,
|
||||||
|
renderMode: "CANVAS",
|
||||||
|
parentColumnSpace: 2,
|
||||||
|
parentRowSpace: 3,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
widgetName: "Button1Copy",
|
||||||
|
rightColumn: 48,
|
||||||
|
onClick: "{{closeModal('Modal1')}}",
|
||||||
|
isDefaultClickDisabled: true,
|
||||||
|
widgetId: "twnxjwy3r1",
|
||||||
|
buttonStyle: "SECONDARY_BUTTON",
|
||||||
|
topRow: 16,
|
||||||
|
bottomRow: 20,
|
||||||
|
isVisible: true,
|
||||||
|
type: "BUTTON_WIDGET",
|
||||||
|
version: 1,
|
||||||
|
parentId: "ihxw5r23hd",
|
||||||
|
isLoading: false,
|
||||||
|
dynamicTriggerPathList: [
|
||||||
|
{
|
||||||
|
key: "onClick",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
leftColumn: 36,
|
||||||
|
dynamicBindingPathList: [],
|
||||||
|
text: "Cancel",
|
||||||
|
isDisabled: false,
|
||||||
|
renderMode: "CANVAS",
|
||||||
|
parentColumnSpace: 2,
|
||||||
|
parentRowSpace: 3,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
);
|
||||||
|
expect(result["suhkuyfpk3"].onClick).toStrictEqual(
|
||||||
|
"{{closeModal('Modal1Copy')}}",
|
||||||
|
);
|
||||||
|
expect(result["twnxjwy3r1"].onClick).toStrictEqual(
|
||||||
|
"{{closeModal('Modal1Copy')}}",
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import {
|
||||||
MAIN_CONTAINER_WIDGET_ID,
|
MAIN_CONTAINER_WIDGET_ID,
|
||||||
WidgetTypes,
|
WidgetTypes,
|
||||||
} from "constants/WidgetConstants";
|
} from "constants/WidgetConstants";
|
||||||
import { cloneDeep, get, isString } from "lodash";
|
import { cloneDeep, get, isString, filter, set } from "lodash";
|
||||||
import { FlattenedWidgetProps } from "reducers/entityReducers/canvasWidgetsReducer";
|
import { FlattenedWidgetProps } from "reducers/entityReducers/canvasWidgetsReducer";
|
||||||
import { getDynamicBindings } from "utils/DynamicBindingUtils";
|
import { getDynamicBindings } from "utils/DynamicBindingUtils";
|
||||||
|
|
||||||
|
|
@ -169,6 +169,28 @@ export const handleSpecificCasesWhilePasting = (
|
||||||
});
|
});
|
||||||
|
|
||||||
widgets[widget.widgetId] = widget;
|
widgets[widget.widgetId] = widget;
|
||||||
|
} else if (widget.type === WidgetTypes.MODAL_WIDGET) {
|
||||||
|
// if Modal is being coppied handle all onClose action rename
|
||||||
|
const oldWidgetName = Object.keys(widgetNameMap).find(
|
||||||
|
(key) => widgetNameMap[key] === widget.widgetName,
|
||||||
|
);
|
||||||
|
// get all the button, icon widgets
|
||||||
|
const copiedBtnIcnWidgets = filter(
|
||||||
|
newWidgetList,
|
||||||
|
(copyWidget) =>
|
||||||
|
copyWidget.type === "BUTTON_WIDGET" ||
|
||||||
|
copyWidget.type === "ICON_WIDGET",
|
||||||
|
);
|
||||||
|
// replace oldName with new one if any of this widget have onClick action for old modal
|
||||||
|
copiedBtnIcnWidgets.map((copyWidget) => {
|
||||||
|
if (copyWidget.onClick) {
|
||||||
|
const newOnClick = widgets[copyWidget.widgetId].onClick.replace(
|
||||||
|
oldWidgetName,
|
||||||
|
widget.widgetName,
|
||||||
|
);
|
||||||
|
set(widgets[copyWidget.widgetId], "onClick", newOnClick);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
widgets = handleIfParentIsListWidgetWhilePasting(widget, widgets);
|
widgets = handleIfParentIsListWidgetWhilePasting(widget, widgets);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user