@@ -228,17 +228,12 @@ const prplInteractiveTaskFormListener = {
228228
229229 console . error ( 'Error in interactive task callback:' , error ) ;
230230
231- // Add error message.
232- const submitButton = formElement . querySelector (
233- 'button[type="submit"] '
231+ // Check if there's already an error message <p> element right after the form
232+ const existingErrorElement = formElement . parentNode . querySelector (
233+ 'p.prpl-interactive-task-error-message '
234234 ) ;
235235
236- if (
237- submitButton &&
238- ! formElement . querySelector (
239- '.prpl-interactive-task-error-message'
240- )
241- ) {
236+ if ( ! existingErrorElement ) {
242237 // Add paragraph with error message.
243238 const errorParagraph = document . createElement ( 'p' ) ;
244239 errorParagraph . classList . add (
@@ -248,11 +243,8 @@ const prplInteractiveTaskFormListener = {
248243 ) ;
249244 errorParagraph . textContent = prplL10n ( 'somethingWentWrong' ) ;
250245
251- // Append before submit button.
252- submitButton . parentNode . insertBefore (
253- errorParagraph ,
254- submitButton
255- ) ;
246+ // Append after the form element.
247+ formElement . insertAdjacentElement ( 'afterend' , errorParagraph ) ;
256248 }
257249 } ,
258250
@@ -263,8 +255,15 @@ const prplInteractiveTaskFormListener = {
263255 * @return {void }
264256 */
265257 showLoading : ( formElement ) => {
266- // data-action="completeTask"
267- formElement . querySelector ( 'button[type="submit"]' ) . disabled = true ;
258+ let submitButton = formElement . querySelector ( 'button[type="submit"]' ) ;
259+
260+ if ( ! submitButton ) {
261+ submitButton = formElement . querySelector (
262+ 'button[data-action="completeTask"]'
263+ ) ;
264+ }
265+
266+ submitButton . disabled = true ;
268267
269268 // Add spinner.
270269 const spinner = document . createElement ( 'span' ) ;
@@ -273,7 +272,7 @@ const prplInteractiveTaskFormListener = {
273272 '<span class="spinner" style="visibility: visible;"></span>' ; // WP spinner.
274273
275274 // Append spinner after submit button.
276- formElement . querySelector ( 'button[type="submit"]' ) . after ( spinner ) ;
275+ submitButton . after ( spinner ) ;
277276 } ,
278277
279278 /**
@@ -283,7 +282,18 @@ const prplInteractiveTaskFormListener = {
283282 * @return {void }
284283 */
285284 hideLoading : ( formElement ) => {
286- formElement . querySelector ( 'button[type="submit"]' ) . disabled = false ;
287- formElement . querySelector ( 'span.prpl-spinner' ) ?. remove ( ) ;
285+ let submitButton = formElement . querySelector ( 'button[type="submit"]' ) ;
286+
287+ if ( ! submitButton ) {
288+ submitButton = formElement . querySelector (
289+ 'button[data-action="completeTask"]'
290+ ) ;
291+ }
292+
293+ submitButton . disabled = false ;
294+ const spinner = formElement . querySelector ( 'span.prpl-spinner' ) ;
295+ if ( spinner ) {
296+ spinner . remove ( ) ;
297+ }
288298 } ,
289299} ;
0 commit comments