There are 10 updates.
 
 
XWiki Platform / cid:jira-generated-image-avatar-120c3356-1101-4e51-a557-4b057cab6b19 XWIKI-25234 Open

Submitting the macro dialog with an empty required parameter displayed with a suggest picker gives no visible feedback

 
View issue   ยท   Add comment
 

10 updates

 
cid:jira-generated-image-avatar-d4a232f8-f62e-4b0b-9dab-968e33d8d199 Changes by Manuel Leduc on 09/Oct/26 10:23
 
Fix Version: 18.9.0-rc-1
Fix Version: 18.4.7
Version: 18.2.0-rc-1
Version: 18.2.0
Description: h2. Steps to reproduce

# Edit a page with the WYSIWYG editor and insert a macro that has a required parameter displayed with a suggest picker (Tom Select), for instance the User Avatar macro and its *Username* parameter.
# Leave that parameter empty and click
{ * } Submit { * } .

h2. Expected

As for a required parameter displayed with a plain text input (e.g. *Name* of the Id macro): the field is outlined in red and gets the focus, so the user understands why the dialog does not close.

h2. Actual

Nothing visible happens: the dialog stays open, the field is not outlined
, and the caret is not in the picker. The user has no clue why *Submit* does nothing.

The include macro is affected too: its required *Reference* group gets the red dashed outline, but the focus is lost the same way.

h2. Cause

On submit, {{macroEditor.js}} ({{
{} validate { }} } ) adds {{has-error}} to the first empty required parameter for one second and focuses its first input that jQuery does not consider {{ {} :hidden { }} } :
* *Focus:* Tom Select hides the original {{select}} / {{input}} with the {{ts-hidden-accessible}} class, which clips it instead of setting {{
{} display: none { }} } . jQuery therefore considers it visible, so it is that invisible element that gets the focus, not the Tom Select control. Selectize, which Tom Select replaced in 18.2.0 (XWIKI-24088), hid the original element with {{ {} display: none { }} } .
* *Outline:* the Bootstrap {{has-error}} styles apply to {{
{} .form-control { }} } , not to the Tom Select control ({{ {} .ts-control { }} } ).

Observed on 18.9.0-SNAPSHOT with Chromium, by checking {{document.activeElement}} 150ms after clicking
{ * } Submit { * } :
* Id macro: {{INPUT#parameter-name}}
* User Avatar macro: {{SELECT#parameter-username.tomselected.ts-hidden-accessible}}
* Include macro: {{INPUT#parameter-reference.tomselected.ts-hidden-accessible}}

h2. Suggested fix

In {{
{} macroEditor.js { }} } , skip the {{.ts-hidden-accessible}} elements when choosing the input to focus (focusing the Tom Select control then also opens its dropdown), and style {{.has-error .ts-control}} like {{ {} .has-error .form-control { }} } .
Component: Flamingo Skin
Component: CKEditor
Component: Web - Templates & Resources
Priority: Major Blocker
Labels: regression