@@ -41,6 +41,9 @@ import {
4141} from "./FieldRevert/FieldRevertComponent" ;
4242
4343export type FieldDetails = Pick < VisualBuilderCslpEventDetails , "editableElement" | "fieldMetadata" > ;
44+
45+ const TOOLTIP_TOP_EDGE_BUFFER = 96 ;
46+
4447interface MultipleFieldToolbarProps {
4548 eventDetails : VisualBuilderCslpEventDetails ;
4649} ;
@@ -103,7 +106,7 @@ function FieldToolbarComponent(
103106 props : MultipleFieldToolbarProps
104107) : JSX . Element | null {
105108 const { eventDetails } = props ;
106- const { fieldMetadata, editableElement : targetElement } = eventDetails ;
109+ const { fieldMetadata, editableElement : targetElement } = eventDetails ;
107110 const direction = useSignal ( "" ) ;
108111 const parentPath =
109112 fieldMetadata ?. multipleFieldMetadata ?. parentDetails ?. parentCslpValue ||
@@ -164,9 +167,12 @@ function FieldToolbarComponent(
164167 return null ;
165168 }
166169 }
167-
170+
168171 direction . value = getChildrenDirection ( targetElement , parentPath ) ;
169172
173+ const invertTooltipPosition =
174+ targetElement . getBoundingClientRect ( ) . top <= TOOLTIP_TOP_EDGE_BUFFER ;
175+
170176 const editButton = Icon ? (
171177 < button
172178 data-testid = "visual-builder__focused-toolbar__multiple-field-toolbar__edit-button"
@@ -175,7 +181,12 @@ function FieldToolbarComponent(
175181 visualBuilderStyles ( ) [ "visual-builder__button" ] ,
176182 visualBuilderStyles ( ) [ "visual-builder__button--secondary" ] ,
177183 visualBuilderStyles ( ) [ "visual-builder__button--edit" ] ,
178- visualBuilderStyles ( ) [ "visual-builder__tooltip" ]
184+ visualBuilderStyles ( ) [ "visual-builder__tooltip" ] ,
185+ {
186+ "visual-builder__tooltip--bottom" : invertTooltipPosition ,
187+ [ visualBuilderStyles ( ) [ "visual-builder__tooltip--bottom" ] ] :
188+ invertTooltipPosition ,
189+ }
179190 ) }
180191 data-tooltip = { "Edit" }
181192 onClick = { ( e ) => {
@@ -196,7 +207,12 @@ function FieldToolbarComponent(
196207 "visual-builder__replace-button visual-builder__button visual-builder__button--secondary" ,
197208 visualBuilderStyles ( ) [ "visual-builder__button" ] ,
198209 visualBuilderStyles ( ) [ "visual-builder__button--secondary" ] ,
199- visualBuilderStyles ( ) [ "visual-builder__tooltip" ]
210+ visualBuilderStyles ( ) [ "visual-builder__tooltip" ] ,
211+ {
212+ "visual-builder__tooltip--bottom" : invertTooltipPosition ,
213+ [ visualBuilderStyles ( ) [ "visual-builder__tooltip--bottom" ] ] :
214+ invertTooltipPosition ,
215+ }
200216 ) }
201217 data-tooltip = { "Replace" }
202218 data-testid = { `visual-builder-replace-${ fieldType } ` }
@@ -216,19 +232,28 @@ function FieldToolbarComponent(
216232 </ button >
217233 ) : null ;
218234
219- const formButton = < button
220- className = { classNames (
221- "visual-builder__replace-button visual-builder__button visual-builder__button--secondary" ,
222- visualBuilderStyles ( ) [ "visual-builder__button" ] ,
223- visualBuilderStyles ( ) [ "visual-builder__button--secondary" ] ,
224- visualBuilderStyles ( ) [ "visual-builder__tooltip" ]
225- ) }
226- data-tooltip = { "Form" }
227- data-testid = { `visual-builder-form` }
228- onClick = { ( e ) => { handleFormFieldFocus ( eventDetails ) } }
229- >
230- < FormIcon />
231- </ button >
235+ const formButton = (
236+ < button
237+ className = { classNames (
238+ "visual-builder__replace-button visual-builder__button visual-builder__button--secondary" ,
239+ visualBuilderStyles ( ) [ "visual-builder__button" ] ,
240+ visualBuilderStyles ( ) [ "visual-builder__button--secondary" ] ,
241+ visualBuilderStyles ( ) [ "visual-builder__tooltip" ] ,
242+ {
243+ "visual-builder__tooltip--bottom" : invertTooltipPosition ,
244+ [ visualBuilderStyles ( ) [ "visual-builder__tooltip--bottom" ] ] :
245+ invertTooltipPosition ,
246+ }
247+ ) }
248+ data-tooltip = { "Form" }
249+ data-testid = { `visual-builder-form` }
250+ onClick = { ( e ) => {
251+ handleFormFieldFocus ( eventDetails ) ;
252+ } }
253+ >
254+ < FormIcon />
255+ </ button >
256+ ) ;
232257
233258 const toggleVariantDropdown = ( ) => {
234259 setIsOpenVariantRevert ( ! isOpenVariantRevert ) ;
@@ -245,7 +270,12 @@ function FieldToolbarComponent(
245270 visualBuilderStyles ( ) [ "visual-builder__button" ] ,
246271 visualBuilderStyles ( ) [ "visual-builder__button--secondary" ] ,
247272 visualBuilderStyles ( ) [ "visual-builder__tooltip" ] ,
248- visualBuilderStyles ( ) [ "visual-builder__variant-button" ]
273+ visualBuilderStyles ( ) [ "visual-builder__variant-button" ] ,
274+ {
275+ "visual-builder__tooltip--bottom" : invertTooltipPosition ,
276+ [ visualBuilderStyles ( ) [ "visual-builder__tooltip--bottom" ] ] :
277+ invertTooltipPosition ,
278+ }
249279 ) }
250280 data-tooltip = { "Variant Revert" }
251281 data-testid = { `visual-builder-canvas-variant-revert` }
@@ -279,6 +309,18 @@ function FieldToolbarComponent(
279309 fetchFieldSchema ( ) ;
280310 } , [ fieldMetadata ] ) ;
281311
312+ const multipleFieldToolbarButtonClasses = classNames (
313+ "visual-builder__button visual-builder__button--secondary" ,
314+ visualBuilderStyles ( ) [ "visual-builder__button" ] ,
315+ visualBuilderStyles ( ) [ "visual-builder__button--secondary" ] ,
316+ visualBuilderStyles ( ) [ "visual-builder__tooltip" ] ,
317+ {
318+ "visual-builder__tooltip--bottom" : invertTooltipPosition ,
319+ [ visualBuilderStyles ( ) [ "visual-builder__tooltip--bottom" ] ] :
320+ invertTooltipPosition ,
321+ }
322+ ) ;
323+
282324 return (
283325 < div
284326 className = { classNames (
@@ -318,18 +360,9 @@ function FieldToolbarComponent(
318360 < >
319361 < button
320362 data-testid = "visual-builder__focused-toolbar__multiple-field-toolbar__move-left-button"
321- className = { classNames (
322- `visual-builder__button visual-builder__button--secondary` ,
323- visualBuilderStyles ( ) [
324- "visual-builder__button"
325- ] ,
326- visualBuilderStyles ( ) [
327- "visual-builder__button--secondary"
328- ] ,
329- visualBuilderStyles ( ) [
330- "visual-builder__tooltip"
331- ]
332- ) }
363+ className = {
364+ multipleFieldToolbarButtonClasses
365+ }
333366 data-tooltip = {
334367 direction . value === "vertical"
335368 ? "Move up"
@@ -359,18 +392,9 @@ function FieldToolbarComponent(
359392
360393 < button
361394 data-testid = "visual-builder__focused-toolbar__multiple-field-toolbar__move-right-button"
362- className = { classNames (
363- `visual-builder__button visual-builder__button--secondary` ,
364- visualBuilderStyles ( ) [
365- "visual-builder__button"
366- ] ,
367- visualBuilderStyles ( ) [
368- "visual-builder__button--secondary"
369- ] ,
370- visualBuilderStyles ( ) [
371- "visual-builder__tooltip"
372- ]
373- ) }
395+ className = {
396+ multipleFieldToolbarButtonClasses
397+ }
374398 data-tooltip = {
375399 direction . value === "vertical"
376400 ? "Move down"
@@ -404,18 +428,9 @@ function FieldToolbarComponent(
404428
405429 < button
406430 data-testid = "visual-builder__focused-toolbar__multiple-field-toolbar__delete-button"
407- className = { classNames (
408- "visual-builder__button visual-builder__button--secondary" ,
409- visualBuilderStyles ( ) [
410- "visual-builder__button"
411- ] ,
412- visualBuilderStyles ( ) [
413- "visual-builder__button--secondary"
414- ] ,
415- visualBuilderStyles ( ) [
416- "visual-builder__tooltip"
417- ]
418- ) }
431+ className = {
432+ multipleFieldToolbarButtonClasses
433+ }
419434 data-tooltip = { "Delete" }
420435 onClick = { ( e ) => {
421436 e . preventDefault ( ) ;
@@ -435,6 +450,9 @@ function FieldToolbarComponent(
435450 < CommentIcon
436451 fieldMetadata = { fieldMetadata }
437452 fieldSchema = { fieldSchema }
453+ invertTooltipPosition = {
454+ invertTooltipPosition
455+ }
438456 />
439457 ) : null }
440458 </ >
0 commit comments