Confirmed TokenInput fields inside <xf:dependent> blocks can remain disabled in XF overlays

Painbaker

Well-known member
Licensed customer
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


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));

1786357421284.webp
 
Back
Top Bottom