Issue #3181634 by Wongjn: States API: Empty/Filled state with number <input> does not update when using spinner

merge-requests/3505/head
Lauri Eskola 2023-02-20 18:24:38 +02:00
parent 54dda45bc8
commit 8542a65d49
No known key found for this signature in database
GPG Key ID: 382FC0F5B0DF53F8
3 changed files with 40 additions and 0 deletions

View File

@ -526,6 +526,10 @@
// the state.
return this.val() === '';
},
// Listen to 'change' for number native "spinner" widgets.
change() {
return this.val() === '';
},
},
checked: {

View File

@ -106,6 +106,10 @@ class JavascriptStatesForm extends FormBase {
'#empty_value' => '_none',
'#empty_option' => '- None -',
];
$form['number_trigger'] = [
'#type' => 'number',
'#title' => 'Number trigger',
];
// Tested fields.
// Checkbox trigger.
@ -374,6 +378,17 @@ class JavascriptStatesForm extends FormBase {
],
];
// Number triggers.
$form['item_visible_when_number_trigger_filled_by_spinner'] = [
'#type' => 'item',
'#title' => 'Item visible when number trigger filled by spinner widget',
'#states' => [
'visible' => [
':input[name="number_trigger"]' => ['filled' => TRUE],
],
],
];
$form['select'] = [
'#type' => 'select',
'#title' => 'select 1',

View File

@ -21,4 +21,25 @@ module.exports = {
.waitForElementNotVisible('input[name="textfield"]', 1000)
.assert.noDeprecationErrors();
},
'Test number trigger with spinner widget': (browser) => {
browser
.drupalRelativeURL('/form-test/javascript-states-form')
.waitForElementVisible('body', 1000)
.waitForElementNotVisible(
'#edit-item-visible-when-number-trigger-filled-by-spinner',
1000,
)
.execute(() => {
// Emulate usage of the spinner browser widget on number inputs
// on modern browsers.
const numberTrigger = document.getElementById('edit-number-trigger');
numberTrigger.value = 1;
numberTrigger.dispatchEvent(new Event('change'));
});
browser.waitForElementVisible(
'#edit-item-visible-when-number-trigger-filled-by-spinner',
1000,
);
},
};