Skip to content

Commit 2188110

Browse files
Merge pull request #527 from contentstack/VB-593-v2
fix: Canvas element not selectable after field change
2 parents a1ee15d + 48e6c69 commit 2188110

File tree

2 files changed

+29
-13
lines changed

2 files changed

+29
-13
lines changed

src/visualBuilder/utils/__test__/updateFocussedState.test.ts

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {
66
import { VisualBuilder } from "../..";
77
import {
88
addFocusOverlay,
9-
hideFocusOverlay,
9+
hideOverlay,
1010
} from "../../generators/generateOverlay";
1111
import { mockGetBoundingClientRect } from "../../../__test__/utils";
1212
import { act } from "@testing-library/preact";
@@ -17,7 +17,7 @@ import { isFieldDisabled } from "../isFieldDisabled";
1717

1818
vi.mock("../../generators/generateOverlay", () => ({
1919
addFocusOverlay: vi.fn(),
20-
hideFocusOverlay: vi.fn(),
20+
hideOverlay: vi.fn(),
2121
}));
2222

2323
vi.mock("../getEntryPermissionsCached", () => ({
@@ -44,10 +44,10 @@ vi.mock("../../utils/fieldSchemaMap", () => {
4444
};
4545
});
4646

47+
4748
describe("updateFocussedState", () => {
4849
beforeEach(() => {
49-
let previousSelectedEditableDOM: HTMLElement;
50-
previousSelectedEditableDOM = document.createElement("div");
50+
const previousSelectedEditableDOM = document.createElement("div");
5151
previousSelectedEditableDOM.setAttribute(
5252
"data-cslp",
5353
"content_type_uid.entry_uid.locale.field_path"
@@ -72,7 +72,7 @@ describe("updateFocussedState", () => {
7272
expect(result).toBeUndefined();
7373
});
7474

75-
it("should hide focus overlay if newPreviousSelectedElement is not found", () => {
75+
it("should call hideOverlay if newPreviousSelectedElement is not found", () => {
7676
const resizeObserverMock = {
7777
disconnect: vi.fn(),
7878
} as unknown as ResizeObserver;
@@ -93,7 +93,13 @@ describe("updateFocussedState", () => {
9393
resizeObserver: resizeObserverMock,
9494
});
9595

96-
expect(hideFocusOverlay).toHaveBeenCalled();
96+
expect(hideOverlay).toHaveBeenCalledWith({
97+
visualBuilderOverlayWrapper: overlayWrapperMock,
98+
focusedToolbar: focusedToolbarMock,
99+
visualBuilderContainer: visualBuilderContainerMock,
100+
resizeObserver: resizeObserverMock,
101+
noTrigger: true,
102+
});
97103
spyQuerySelector.mockRestore();
98104
});
99105

@@ -241,8 +247,7 @@ describe("updateFocussedState", () => {
241247

242248
describe("updateFocussedStateOnMutation", () => {
243249
beforeEach(() => {
244-
let previousSelectedEditableDOM: HTMLElement;
245-
previousSelectedEditableDOM = document.createElement("div");
250+
const previousSelectedEditableDOM = document.createElement("div");
246251
previousSelectedEditableDOM.setAttribute(
247252
"data-cslp",
248253
"content_type_uid.entry_uid.locale.field_path"
@@ -261,7 +266,7 @@ describe("updateFocussedStateOnMutation", () => {
261266
expect(result).toBeUndefined();
262267
});
263268

264-
it("should hide focus overlay if newSelectedElement is not found", () => {
269+
it("should call hideOverlay if newSelectedElement is not found", () => {
265270
const resizeObserverMock = {
266271
disconnect: vi.fn(),
267272
} as unknown as ResizeObserver;
@@ -278,7 +283,13 @@ describe("updateFocussedStateOnMutation", () => {
278283
resizeObserverMock
279284
);
280285

281-
expect(hideFocusOverlay).toHaveBeenCalled();
286+
expect(hideOverlay).toHaveBeenCalledWith({
287+
visualBuilderOverlayWrapper: focusOverlayWrapperMock,
288+
focusedToolbar: focusedToolbarMock,
289+
visualBuilderContainer: visualBuilderContainerMock,
290+
resizeObserver: resizeObserverMock,
291+
noTrigger: true,
292+
});
282293
});
283294

284295
it("should update focus outline dimensions", () => {

src/visualBuilder/utils/updateFocussedState.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { extractDetailsFromCslp } from "../../cslp";
33
import { getAddInstanceButtons } from "../generators/generateAddInstanceButtons";
44
import {
55
addFocusOverlay,
6-
hideFocusOverlay,
6+
hideOverlay,
77
} from "../generators/generateOverlay";
88
import { hideHoverOutline } from "../listeners/mouseHover";
99
import {
@@ -120,7 +120,7 @@ export async function updateFocussedState({
120120
) ||
121121
document.querySelector(`[data-cslp="${previousSelectedElementCslp}"]`);
122122
if (!newPreviousSelectedElement && resizeObserver) {
123-
hideFocusOverlay({
123+
hideOverlay({
124124
visualBuilderOverlayWrapper: overlayWrapper,
125125
focusedToolbar,
126126
visualBuilderContainer,
@@ -267,7 +267,7 @@ export function updateFocussedStateOnMutation(
267267
`[data-cslp-unique-id="${selectedElementCslpUniqueId}"]`
268268
) || document.querySelector(`[data-cslp="${selectedElementCslp}"]`);
269269
if (!newSelectedElement && resizeObserver) {
270-
hideFocusOverlay({
270+
hideOverlay({
271271
visualBuilderOverlayWrapper: focusOverlayWrapper,
272272
focusedToolbar,
273273
visualBuilderContainer,
@@ -302,6 +302,9 @@ export function updateFocussedStateOnMutation(
302302
}
303303
}
304304

305+
//TODO: This logic for overlay position is already present in generateOverlay as `addFocusOverlay`.
306+
// We should refactor this to use the same logic. Refer "VB-593" branch for more details.
307+
305308
/**
306309
* Update the focus overlays if they exists.
307310
*/
@@ -388,6 +391,8 @@ export function updateFocussedStateOnMutation(
388391
* Update the focus toolbar if it exists.
389392
*/
390393

394+
//TODO: This logic for toolbar position is already present in same file as `positionToolbar`.
395+
// We should refactor this to use the same logic. Refer "VB-593" branch for more details.
391396
if (focusedToolbar) {
392397
const targetElementRightEdgeOffset =
393398
window.scrollX + window.innerWidth - selectedElementDimension.left;

0 commit comments

Comments
 (0)