diff --git a/src/Autocomplete/CHANGELOG.md b/src/Autocomplete/CHANGELOG.md index 8720236c2bb..03022e74226 100644 --- a/src/Autocomplete/CHANGELOG.md +++ b/src/Autocomplete/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +## 2.25.0 + +- Escape `querySelector` dynamic selector with `CSS.escape()` #2663 + ## 2.23.0 - Deprecate `ExtraLazyChoiceLoader` in favor of `Symfony\Component\Form\ChoiceList\Loader\LazyChoiceLoader` diff --git a/src/Autocomplete/assets/dist/controller.js b/src/Autocomplete/assets/dist/controller.js index 1f2363100e9..b9712824880 100644 --- a/src/Autocomplete/assets/dist/controller.js +++ b/src/Autocomplete/assets/dist/controller.js @@ -270,7 +270,7 @@ _default_1_instances = new WeakSet(), _default_1_getCommonConfig = function _def let orderedOption = null; for (const [, tomSelectOption] of Object.entries(this.tomSelect.options)) { if (tomSelectOption.$order === optionOrder) { - orderedOption = parentElement.querySelector(`:scope > option[value="${tomSelectOption[this.tomSelect.settings.valueField]}"]`); + orderedOption = parentElement.querySelector(`:scope > option[value="${CSS.escape(tomSelectOption[this.tomSelect.settings.valueField])}"]`); break; } } diff --git a/src/Autocomplete/assets/src/controller.ts b/src/Autocomplete/assets/src/controller.ts index 6b68283b51d..f89b29141c4 100644 --- a/src/Autocomplete/assets/src/controller.ts +++ b/src/Autocomplete/assets/src/controller.ts @@ -192,7 +192,7 @@ export default class extends Controller { for (const [, tomSelectOption] of Object.entries(this.tomSelect.options)) { if (tomSelectOption.$order === optionOrder) { orderedOption = parentElement.querySelector( - `:scope > option[value="${tomSelectOption[this.tomSelect.settings.valueField]}"]` + `:scope > option[value="${CSS.escape(tomSelectOption[this.tomSelect.settings.valueField])}"]` ); break;