Skip to content

Commit 74e6e5b

Browse files
fix: partial state clear when DOM is not visible during mutuation and resize checks
1 parent d9857f9 commit 74e6e5b

2 files changed

Lines changed: 24 additions & 13 deletions

File tree

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

@@ -237,8 +243,7 @@ describe("updateFocussedState", () => {
237243

238244
describe("updateFocussedStateOnMutation", () => {
239245
beforeEach(() => {
240-
let previousSelectedEditableDOM: HTMLElement;
241-
previousSelectedEditableDOM = document.createElement("div");
246+
const previousSelectedEditableDOM = document.createElement("div");
242247
previousSelectedEditableDOM.setAttribute(
243248
"data-cslp",
244249
"content_type_uid.entry_uid.locale.field_path"
@@ -257,7 +262,7 @@ describe("updateFocussedStateOnMutation", () => {
257262
expect(result).toBeUndefined();
258263
});
259264

260-
it("should hide focus overlay if newSelectedElement is not found", () => {
265+
it("should call hideOverlay if newSelectedElement is not found", () => {
261266
const resizeObserverMock = {
262267
disconnect: vi.fn(),
263268
} as unknown as ResizeObserver;
@@ -274,7 +279,13 @@ describe("updateFocussedStateOnMutation", () => {
274279
resizeObserverMock
275280
);
276281

277-
expect(hideFocusOverlay).toHaveBeenCalled();
282+
expect(hideOverlay).toHaveBeenCalledWith({
283+
visualBuilderOverlayWrapper: focusOverlayWrapperMock,
284+
focusedToolbar: focusedToolbarMock,
285+
visualBuilderContainer: visualBuilderContainerMock,
286+
resizeObserver: resizeObserverMock,
287+
noTrigger: true,
288+
});
278289
});
279290

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

src/visualBuilder/utils/updateFocussedState.ts

Lines changed: 3 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,
@@ -265,7 +265,7 @@ export function updateFocussedStateOnMutation(
265265
`[data-cslp-unique-id="${selectedElementCslpUniqueId}"]`
266266
) || document.querySelector(`[data-cslp="${selectedElementCslp}"]`);
267267
if (!newSelectedElement && resizeObserver) {
268-
hideFocusOverlay({
268+
hideOverlay({
269269
visualBuilderOverlayWrapper: focusOverlayWrapper,
270270
focusedToolbar,
271271
visualBuilderContainer,

0 commit comments

Comments
 (0)