From 2736b4710358c3169393647910c1023fa11e9101 Mon Sep 17 00:00:00 2001 From: buchmann Date: Tue, 30 Jun 2026 14:53:33 +0200 Subject: [PATCH] Consider mutual exclusivity of search options If regex search is enabled, the other two options are disabled (only visually). This should give the user a fair idea of what's happening while keeping things as simple as possible. --- .../elements/search_config_controller.js | 47 +++++++++++++++++++ templates/components/search.macro.html.twig | 2 +- 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 assets/controllers/elements/search_config_controller.js diff --git a/assets/controllers/elements/search_config_controller.js b/assets/controllers/elements/search_config_controller.js new file mode 100644 index 00000000..cc1557f2 --- /dev/null +++ b/assets/controllers/elements/search_config_controller.js @@ -0,0 +1,47 @@ +/* + * This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony). + * + * Copyright (C) 2019 - 2026 Jan Böhmer (https://github.com/jbtronics) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +import {Controller} from "@hotwired/stimulus"; + +export default class extends Controller +{ + connect() { + this.element.addEventListener('change', () => { + this.updateOthers() + }); + } + + updateOthers() { + let value = this.element.checked + let ext = document.getElementById('extensive') + let wild = document.getElementById('wildcard') + if (value === null) { + return; + } + + if (value) { + ext.disabled = 'disabled' + wild.disabled = 'disabled' + } + else { + ext.removeAttribute('disabled') + wild.removeAttribute('disabled') + } + } +} diff --git a/templates/components/search.macro.html.twig b/templates/components/search.macro.html.twig index f826e1a4..8bdf83ed 100644 --- a/templates/components/search.macro.html.twig +++ b/templates/components/search.macro.html.twig @@ -67,7 +67,7 @@ {% endif %}
- +