- Affected version
- 2.3.10
TokenInput fields inside XenForo <xf:dependent> blocks can remain disabled after their controlling option is selected in dynamically loaded overlays
XF.TokenInput checks this.target.disabled only during initialization:
XF.Disabler enables the original hidden input inside <xf:dependent>, but TokenInput does not handle that change.
TokenInput should also handle control events:

Code:
<xf:radiorow name="poll[pb_pva_access_mode]" value="{$accessMode}"
label="{{ phrase('pb_pva_voting_access') }}"
rowtype="{$rowType}">
<xf:option value="all" label="{{ phrase('everyone') }}" />
<xf:option value="whitelist" data-hide="true" label="{{ phrase('pb_pva_whitelist') }}">
<xf:dependent>
<xf:tokeninput name="poll[pb_pva_whitelist_usernames]"
value="{$whitelistUsernames}"
href="{{ link('members/find') }}"
min-length="1" />
<p class="formRow-explain">{{ phrase('pb_pva_whitelist_explain') }}</p>
</xf:dependent>
</xf:option>
</xf:radiorow>
XF.TokenInput checks this.target.disabled only during initialization:
JavaScript:
if (this.target.disabled)
{
this.tagify.setDisabled(true);
}
XF.Disabler enables the original hidden input inside <xf:dependent>, but TokenInput does not handle that change.
TokenInput should also handle control events:
JavaScript:
XF.on(this.target, 'control:enabled', () => this.tagify.setDisabled(false));
XF.on(this.target, 'control:disabled', () => this.tagify.setDisabled(true));
