diff --git a/app/javascript/controllers/auto_submit_form_controller.js b/app/javascript/controllers/auto_submit_form_controller.js index 56eb9fd2..817afb68 100644 --- a/app/javascript/controllers/auto_submit_form_controller.js +++ b/app/javascript/controllers/auto_submit_form_controller.js @@ -24,10 +24,31 @@ export default class extends Controller { }); } - handleInput = () => { + handleInput = (event) => { + const target = event.target + clearTimeout(this.timeout); this.timeout = setTimeout(() => { this.element.requestSubmit(); - }, 500); + }, this.#debounceTimeout(target)); }; + + #debounceTimeout(element) { + if(element.dataset.autosubmitDebounceTimeout) { + return Number.parseInt(element.dataset.autosubmitDebounceTimeout); + } + + const type = element.type || element.tagName; + + switch (type.toLowerCase()) { + case 'input': + case 'textarea': + return 500; + case 'select-one': + case 'select-multiple': + return 0; + default: + return 500; + } + } } diff --git a/test/system/imports_test.rb b/test/system/imports_test.rb index 02270bb9..d0692c25 100644 --- a/test/system/imports_test.rb +++ b/test/system/imports_test.rb @@ -101,7 +101,7 @@ class ImportsTest < ApplicationSystemTestCase within(form) do select = form.find("select") select "Depository", from: select["id"] - sleep 1 + sleep 0.5 end end