@@ -39,6 +39,7 @@ import {
3939 IVariantStatus ,
4040 VariantRevertDropdown ,
4141} from "./FieldRevert/FieldRevertComponent" ;
42+ import { LoadingIcon } from "./icons/loading" ;
4243
4344export type FieldDetails = Pick <
4445 VisualBuilderCslpEventDetails ,
@@ -93,27 +94,22 @@ function handleEdit(fieldMetadata: CslpData) {
9394}
9495
9596function handleFormFieldFocus ( eventDetails : VisualBuilderCslpEventDetails ) {
96- const { editableElement, fieldMetadata, cslpData } = eventDetails ;
97- visualBuilderPostMessage
98- ?. send ( VisualBuilderPostMessageEvents . TOGGLE_FORM , {
99- fieldMetadata,
100- cslpData,
101- } )
102- . then ( ( ) => {
103- visualBuilderPostMessage ?. send (
104- VisualBuilderPostMessageEvents . FOCUS_FIELD ,
105- {
106- DOMEditStack : getDOMEditStack ( editableElement ) ,
107- }
108- ) ;
109- } ) ;
97+ const { editableElement } = eventDetails ;
98+ return visualBuilderPostMessage ?. send (
99+ VisualBuilderPostMessageEvents . FOCUS_FIELD ,
100+ {
101+ DOMEditStack : getDOMEditStack ( editableElement ) ,
102+ toggleVisibility : true ,
103+ }
104+ ) ;
110105}
111106
112107function FieldToolbarComponent (
113108 props : MultipleFieldToolbarProps
114109) : JSX . Element | null {
115110 const { eventDetails, isVariant : isVariantOrParentOfVariant } = props ;
116111 const { fieldMetadata, editableElement : targetElement } = eventDetails ;
112+ const [ isFormLoading , setIsFormLoading ] = useState ( false ) ;
117113
118114 const parentPath =
119115 fieldMetadata ?. multipleFieldMetadata ?. parentDetails ?. parentCslpValue ||
@@ -252,15 +248,27 @@ function FieldToolbarComponent(
252248 "visual-builder__tooltip--bottom" : invertTooltipPosition ,
253249 [ visualBuilderStyles ( ) [ "visual-builder__tooltip--bottom" ] ] :
254250 invertTooltipPosition ,
251+ } ,
252+ {
253+ [ visualBuilderStyles ( ) [ "visual-builder__button--comment-loader" ] ] : isFormLoading ,
254+ "visual-builder__button--comment-loader" : isFormLoading
255255 }
256256 ) }
257257 data-tooltip = { "Form" }
258258 data-testid = { `visual-builder-form` }
259- onClick = { ( e ) => {
260- handleFormFieldFocus ( eventDetails ) ;
259+ onClick = { async ( e ) => {
260+ e . preventDefault ( ) ;
261+ e . stopPropagation ( ) ;
262+ setIsFormLoading ( true ) ;
263+ try {
264+ await handleFormFieldFocus ( eventDetails ) ;
265+ } finally {
266+ setIsFormLoading ( false ) ;
267+ }
261268 } }
269+ disabled = { isFormLoading }
262270 >
263- < FormIcon />
271+ { isFormLoading ? < LoadingIcon /> : < FormIcon /> }
264272 </ button >
265273 ) ;
266274
0 commit comments