Fix SMS provider dropdown: use plain script tag instead of onchange attribute

The onchange attribute on the select helper wasn't rendering correctly
due to Rails select helper argument handling. Switched to a plain <script>
tag with Turbo-compatible DOMContentLoaded listener, matching patterns
used elsewhere in the codebase.
pull/687/head
Wabo 2 weeks ago
parent fdd4f8f5d5
commit a0249defff

@ -63,8 +63,7 @@
Sms::SUPPORTED_PROVIDERS.map { |p| [provider_labels[p] || p, p] }, Sms::SUPPORTED_PROVIDERS.map { |p| [provider_labels[p] || p, p] },
{ selected: selected_provider }, { selected: selected_provider },
class: 'base-select', class: 'base-select',
id: 'sms_provider_select', id: 'sms_provider_select' %>
onchange: 'var s=this,v=s.value;document.querySelectorAll("[data-provider-block]").forEach(function(b){b.classList.toggle("hidden",b.dataset.providerBlock!==v)})' %>
</div> </div>
<div data-provider-block="bulkvs" class="space-y-4<%= ' hidden' unless selected_provider == 'bulkvs' %>"> <div data-provider-block="bulkvs" class="space-y-4<%= ' hidden' unless selected_provider == 'bulkvs' %>">
@ -186,3 +185,18 @@
<div class="w-0 md:w-52"></div> <div class="w-0 md:w-52"></div>
</div> </div>
<script>
(function() {
var select = document.getElementById('sms_provider_select');
if (!select) return;
function sync() {
var v = select.value;
document.querySelectorAll('[data-provider-block]').forEach(function(b) {
b.classList.toggle('hidden', b.dataset.providerBlock !== v);
});
}
select.addEventListener('change', sync);
sync();
})();
</script>

Loading…
Cancel
Save