Skip to content

Commit 5bfb733

Browse files
committed
Only add the clear_button plugin to TomSelect if the form element is not required
1 parent 4ae2f72 commit 5bfb733

File tree

4 files changed

+23
-2
lines changed

4 files changed

+23
-2
lines changed

src/Autocomplete/assets/dist/controller.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ class default_1 extends Controller {
219219
_default_1_instances = new WeakSet(), _default_1_getCommonConfig = function _default_1_getCommonConfig() {
220220
const plugins = {};
221221
const isMultiple = !this.selectElement || this.selectElement.multiple;
222-
if (!this.formElement.disabled && !isMultiple) {
222+
if (!this.formElement.required && !this.formElement.disabled && !isMultiple) {
223223
plugins.clear_button = { title: '' };
224224
}
225225
if (isMultiple) {

src/Autocomplete/assets/src/controller.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ export default class extends Controller {
120120

121121
// multiple values excepted if this is NOT A select (i.e. input) or a multiple select
122122
const isMultiple = !this.selectElement || this.selectElement.multiple;
123-
if (!this.formElement.disabled && !isMultiple) {
123+
if (!this.formElement.required && !this.formElement.disabled && !isMultiple) {
124124
plugins.clear_button = { title: '' };
125125
}
126126

src/Autocomplete/tests/Fixtures/Form/ProductType.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,16 @@ public function buildForm(FormBuilderInterface $builder, array $options): void
4646
'autocomplete' => true,
4747
'mapped' => false,
4848
])
49+
->add('colour', ChoiceType::class, [
50+
'choices' => [
51+
'red' => 'red',
52+
'blue' => 'blue',
53+
'green' => 'green',
54+
],
55+
'autocomplete' => true,
56+
'mapped' => false,
57+
'required' => false,
58+
])
4959
->add('tags', TextType::class, [
5060
'mapped' => false,
5161
'autocomplete' => true,

src/Autocomplete/tests/Functional/AutocompleteFormRenderingTest.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,21 @@ public function testFieldsRenderWithStimulusController()
3434
->assertElementAttributeContains('#product_category', 'data-symfony--ux-autocomplete--autocomplete-url-value', '/test/autocomplete/category_autocomplete_type?extra_options=')
3535
->assertElementAttributeContains('#product_category', 'data-symfony--ux-autocomplete--autocomplete-min-characters-value', '2')
3636
->assertElementAttributeContains('#product_category', 'data-symfony--ux-autocomplete--autocomplete-max-results-value', '25')
37+
->assertElementAttributeContains('#product_category', 'required', 'required')
38+
39+
->assertElementAttributeContains('#product_ingredients', 'required', 'required')
3740

3841
->assertElementAttributeContains('#product_portionSize', 'data-controller', 'symfony--ux-autocomplete--autocomplete')
42+
->assertElementAttributeContains('#product_portionSize', 'required', 'required')
43+
44+
->assertElementAttributeContains('#product_colour', 'data-controller', 'symfony--ux-autocomplete--autocomplete')
45+
// not implemented in zenstruck/browser
46+
// ->elementAttributeNotExists('#product_colour', 'required')
47+
->assertNotSeeElement('#product_colour[required]')
48+
3949
->assertElementAttributeContains('#product_tags', 'data-controller', 'symfony--ux-autocomplete--autocomplete')
4050
->assertElementAttributeContains('#product_tags', 'data-symfony--ux-autocomplete--autocomplete-tom-select-options-value', 'createOnBlur')
51+
->assertElementAttributeContains('#product_tags', 'required', 'required')
4152
;
4253
}
4354

0 commit comments

Comments
 (0)