Skip to content

Commit ebc671b

Browse files
Merge pull request #295 from contentstack/VE-3974-focus-loses-when-a-field-is-deleted
2 parents 1eb5894 + 7a9a14e commit ebc671b

File tree

3 files changed

+25
-5
lines changed

3 files changed

+25
-5
lines changed

src/visualBuilder/components/FieldToolbar.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ const TOOLTIP_TOP_EDGE_BUFFER = 96;
4646

4747
interface MultipleFieldToolbarProps {
4848
eventDetails: VisualBuilderCslpEventDetails;
49+
hideOverlay: () => void;
4950
};
5051

5152
function handleReplaceAsset(fieldMetadata: CslpData) {
@@ -309,6 +310,14 @@ function FieldToolbarComponent(
309310
fetchFieldSchema();
310311
}, [fieldMetadata]);
311312

313+
useEffect(() => {
314+
visualBuilderPostMessage?.on(VisualBuilderPostMessageEvents.DELETE_INSTANCE, (args: { data: { path: string } }) => {
315+
if(args.data?.path === fieldMetadata.instance.fieldPathWithIndex){
316+
props.hideOverlay()
317+
}
318+
})
319+
}, [])
320+
312321
const multipleFieldToolbarButtonClasses = classNames(
313322
"visual-builder__button visual-builder__button--secondary",
314323
visualBuilderStyles()["visual-builder__button"],

src/visualBuilder/generators/generateToolbar.tsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,17 @@ import FieldLabelWrapperComponent from "../components/fieldLabelWrapper";
1515

1616
export function appendFocusedToolbar(
1717
eventDetails: VisualBuilderCslpEventDetails,
18-
focusedToolbarElement: HTMLDivElement
18+
focusedToolbarElement: HTMLDivElement,
19+
hideOverlay: () => void
1920
): void {
2021
appendFieldPathDropdown(eventDetails, focusedToolbarElement);
21-
appendFieldToolbar(eventDetails, focusedToolbarElement);
22+
appendFieldToolbar(eventDetails, focusedToolbarElement, hideOverlay);
2223
}
2324

2425
export function appendFieldToolbar(
2526
eventDetails: VisualBuilderCslpEventDetails,
26-
focusedToolbarElement: HTMLDivElement
27+
focusedToolbarElement: HTMLDivElement,
28+
hideOverlay: () => void
2729
): void {
2830
if (
2931
focusedToolbarElement.querySelector(
@@ -35,6 +37,7 @@ export function appendFieldToolbar(
3537
render(
3638
<FieldToolbarComponent
3739
eventDetails={eventDetails}
40+
hideOverlay={hideOverlay}
3841
/>,
3942
wrapper
4043
);

src/visualBuilder/listeners/mouseClick.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ type AddFocusOverlayParams = Pick<
3535
type AddFocusedToolbarParams = Pick<
3636
EventListenerHandlerParams,
3737
"eventDetails" | "focusedToolbar"
38-
>;
38+
> & { hideOverlay: () => void };
3939

4040
function addOverlay(params: AddFocusOverlayParams) {
4141
if (!params.overlayWrapper || !params.editableElement) return;
@@ -53,7 +53,7 @@ export function addFocusedToolbar(params: AddFocusedToolbarParams): void {
5353

5454
if (!editableElement || !params.focusedToolbar) return;
5555

56-
appendFocusedToolbar(params.eventDetails, params.focusedToolbar);
56+
appendFocusedToolbar(params.eventDetails, params.focusedToolbar, params.hideOverlay);
5757
}
5858

5959
async function handleBuilderInteraction(
@@ -143,6 +143,14 @@ async function handleBuilderInteraction(
143143
addFocusedToolbar({
144144
eventDetails: eventDetails,
145145
focusedToolbar: params.focusedToolbar,
146+
hideOverlay: () => {
147+
hideOverlay({
148+
visualBuilderContainer: params.visualBuilderContainer,
149+
visualBuilderOverlayWrapper: params.overlayWrapper,
150+
focusedToolbar: params.focusedToolbar,
151+
resizeObserver: params.resizeObserver,
152+
});
153+
}
146154
});
147155

148156
const { content_type_uid, fieldPath, cslpValue } = fieldMetadata;

0 commit comments

Comments
 (0)